递归数组求和
进行数组求和,不允许使用循环和标准库函数,怎么办?
众所周知,任何循环都可以转化成递归,那么数组求和也当然可以
假设f(i)的值为数组从下标i到末尾所有项的和,那么f(i)=arr[i]+f(i+1)
求整个数组的和,那自然是数组从下标0到末尾所有项的和,也就是f(0)
这可以用于作递归的条件,当然需要有递归出口:当下标越界时不能继续进行递归,而是返回0
1 | const arr = [1, 1, 4, 5, 1, 4, 1, 9, 1, 9, 8, 1, 0] |
同样,乘法也可以这样递归
1 | const sum = (arr) => { |
那么其他循环转递归可不可以遵循这个逻辑呢?我觉得是可以的,毕竟循环就是不断推进的下标
不过很多场合下也用不着递归的,性能不好
评论