javascript递归函数

<scriptlanguage="javascript">functionsum(n){if(n==1){return1;//疑问在这里,他这是最终,为什么返回的不是1而... <script language="javascript">
function sum(n)
{
if(n==1)
{
return 1;//疑问在这里,他这是最终,为什么返回的不是1而是5050,改成true也行,为什么换成false结果就成了5049了
}
else
{
return n+sum(n-1)
}
}
alert(sum(100))
</script>
展开
 我来答
百度网友dde64d5e7
推荐于2016-04-13 · TA获得超过2310个赞
知道小有建树答主
回答量:1430
采纳率:66%
帮助的人:1403万
展开全部
因为递归是一层层请求下去,而数据是一层层返回上来:
第一百次:1
第九十九:2+1(第一百次返回的数据)
第九十八:3+(2+1)(第九十九次返回的数据)
。。。
第一次:100+4950(第二次返回的数据)

为什么TRUE可以呢?
因为true会被隐性转换为1,而false会被隐性转换为0。

递归就相当于调用了100次那个sum函数,这是很耗内存资源的;
一般可以用循环体实现的就尽量用循环体来实现,如上题目就可以改为下面的方式实现:
function sum(n){
var total = 0;
do{
total+=n;
}while(n--)
return total;
}
矮油嫑酱紫唉
2012-06-23 · TA获得超过336个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:224万
展开全部
应该已经明了递归的概念了吧?本例中相当于调用了100次sum,第一次是sum(100),运行进sum后,发现n不等于1,则会执行n + sum(n - 1),对100来说就是100 + sum(99),于是又会调用sum(99),之后是sum(98)....直到sum(1),不再调用sum,直接返回1,总体效果就是:
100 + (99 + (98 + ( .... + (1) ))),1-100的等差数列之和
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式