请解释一下下段js代码:
function C(arr, num){ var r=[]; (function f(t,a,n){ if (n==0) return r.push(t); for (var i=0,l=a.length; i<=l-n; i++){ f(t.concat(a[i]), a.slice(i+1), n-1); } })([],arr,num); return r; }
function C(arr, num){ var r=[]; (function f(t,a,n){ if (n==0) return r.push(t); // 当n等于0的时候,就将临时的组合推送到结果数组中。 for (var i=0,l=a.length; i<=l-n; i++){ //这里开始排列。这里是采用递归的方式进行排列的。 f(t.concat(a[i]), a.slice(i+1), n-1); } })([],arr,num); return r; } C([1,2,3,4], 3) //首先,该函数的功能是实现将arr按照每次num个,进行排列组合。 //比如[1, 2, 3],每次2个,进行排列组合之后就是: [1,2], [1,3], [2,3] //算法核心是,取第一位和它后面的数字进行一次匹配。
想js的sort();功能很直白,就是排序,可能应用在商品列表价格排序,升序或降序... ...\
这个C(arr,num);拍出来的数组规律是很规律,但不算升序,也不算降序,如果sort();成为排序函数,那这个叫“组合函数”?用在哪呢?
想想js的sort();功能很直白,就是排序,可能应用在商品列表价格,可以排序,升序或降序... ...
但C(arr,num);排出来的数组虽规律,但不算升序,也不算降序,如果sort();称为排序函数,那这个叫“组合函数”?用在哪呢?
@Coca-code: 就是一个算法。。
@幻天芒: 我还是想知道这算法解决什麽问题。
@幻天芒: 不为解决问题的学问,是噱头大于内容。。
@Coca-code: 完全排列哇,就是数学里面的排列组合问题。
重複迴圈直到n=0的時候把t塞給r..
t是什麼不知道
a是什麼不知道
n是什麼不知道
arr可能是個Array吧,也不知道
num可能是個數字,也不知道
什麼都沒有要怎麼解釋..
要知道干嘛,代码段什么功能就行
function C(arr, num){ var r=[]; (function f(t,a,n){ if (n==0) return r.push(t); for (var i=0; i<=(a.length - n); i++){ f(t.concat(a[i]), a.slice(i+1), n-1); } } ([],arr,num)); return r; } var aa = ['aaa', 'bbb', 'ccc', 'ddd', 'eee']; var nn = 0; var xx = C(aa, nn);
@Coca-code:
仔細研究一下,蠻好玩的功能,但不知道要怎麼描述...
重複執行上面這段js,nn從0到5都執行一次,然後看看結果的xx
這叫什麼?排列組合嗎?
我也學習了,哈哈
剛查到,英文叫"Permutation"