我受到this question的啓發,在JavaScript中編寫遞歸函數以添加數組的元素並相應返回數組。在JavaScript中返回數組
在僞arr = [1,2,3,4,5,6]
func (arr,2) = > [1+3+5, 2+4+6]
[9,12]
func (arr,3) = > [1+4,2+5,3+6]
[5,7,9]
所以我寫了一個小提琴,here。
var input = [1,2,3,4,5,6,7,8,9];
function tupleAdd(tuple,i,p,t,output){
if(typeof t == "undefined")
t=0;
if(typeof p == "undefined")
p=0;
if(typeof output == "undefined")
output = [];
if(typeof output[t] =="undefined")
output[t]=0;
output[t]+=i[p];
p++;
t++;
t>=tuple?t=0:null;
if(p<i.length)
tupleAdd(tuple,i,p,t,output);
else{
console.log(output);
return(output);
}
}
x = tupleAdd(3,input);
console.log(x);
我的功能起作用,因爲第一個console.log()
顯示了合適的值。奇怪的是,當我return
output
(有或沒有parens),並嘗試再次記錄它,我得到undefined
。
我覺得這讓人深感不安。誰能澄清爲什麼return
值與console.log
值不同?
如果遞歸調用前加'return'會發生什麼'tupleAdd()'? – BenM
如何做'返回tupleAdd(元組,i,p,t,輸出)'? – PSL