永发信息网

JS中归递算法的问题

答案:3  悬赏:60  手机版
解决时间 2021-04-07 15:45
  • 提问者网友:记得曾经
  • 2021-04-07 06:32
JS中归递算法的问题
最佳答案
  • 五星知识达人网友:想偏头吻你
  • 2021-04-07 07:13
return的意思就是退出当前函数,并且让函数给出一个值.
比如说最简单的,
function func(){
return 1;
}
那么调用
alert(func())
自然可以获得1,因为return的时候返回了一个值1,那么退出"func()"这部分计算的时候,就会获得一个1.
只需要牢记这一点就可以很容易的理解递归.
函数内部调用函数,就和普通的函数调用一样,return永远是跳出当前的函数而已,至于跳出去了是什么地方,那要看你是从什么地方"跳进来"这个函数的.

具体到你的例子,这是一个利用递归计算阶乘的函数.无论是否n=1,return都返回到上级函数,也就是调用这个函数的函数.
比如说,计算f(4)的时候会调用到f(3),那么f(3)运行完毕返回的6就会被f(4)中的式子n*f(n-1)所计算,然后继续返回到主程序中.而由于计算f(1)不需要调用任何函数,那么就会直接返回1到调用它的f(2)中去.
全部回答
  • 1楼网友:刀戟声无边
  • 2021-04-07 09:24
当N不是1的时候,return 是在这个位置 return n*te(n-1) 这里的 te(n-1) 里return回来的值,与N 相乘,然后再return到你调用的地方,
当N是1的时候,直接 return 1 到你调用的地方,
  • 2楼网友:荒野風
  • 2021-04-07 08:47
你好,递归的分析过程如下:
tete(4)->
4*te(4-1)->
4*3*te(3-1)->
4*3*2*te(2-1)->
4*3*2*1*te(2-1)->
4*3*2*1*1

但是实际上程序计算的时候是按照上面的顺序反过来执行的:
相当于:4*(3*(2*(1*(1))))
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯