js递归求和1,2,3,..., n,..., 3,2,1?
js递归求和1,2,3,..., n,..., 3,2,1?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
js递归求和1,2,3,..., n,..., 3,2,1?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
答案楼上其实都有了,然而题目要求递归,
递归吧,我的理解呢,就是尽量避免什么转化过程,尽量少动脑吧?
我就主要说说解这种题的思路吧。
递归的思路就是分阶段求解,然后定终点。
核心就是找fn(n)和fn(n-1)的关系,结合边界条件fn(1),写出一个如下的函数:
以本题来说,
故
终点
结合便能写出
类似的就同理可得咯
定义
f(n) = sum(1, 2, 3, ..., n, ..., 3, 2, 1)
。解法一
问题转化为
f(n) = 2 * g(n) - n
,其中g(n) = sum(1, 2, 3, ..., n)
。不用高斯求和法强行递归的话,g(n) = g(n - 1) + n
(n > 1),g(n) = 1
(n = 1)。解法二
显然,
f(n) = f(n - 1) + n + (n - 1)
(n > 1),f(n) = 1
(n = 1)。将
1,2,3,..., n,..., 3,2,1
转化为求前n
项的和与前n-1
的和的和。于是有了:
1 + 2 + 3 + 4 + ... + n + ... + 3 + 2 + 1 = n(n + 1)/2 + (n - 1)(n - 1 + 1)/2
整理得到 n2
所以:
但是题目又要求用递归做。
不用数学的思想 单纯用递归的思想
比如传入4
先执行先序递归 index++
先序递归做value = 1+2+3+4
满足条件后 return;
然后执行后续递归 开始index--
后续递归做value += 3+2+1+0;
var cal = function() {