关于递归的出口条件定义不太理解,还望老师能够详细讲解下
来源:4-2 编程练习
白妖
2021-04-15 23:40:42
问题描述:
之前我们学习到使用递归进行阶乘的计算,其中有一块是递归的出口条件,我们当时使用的是:
if (n == 1) return 1;
而当在我进行和运算时,依然可以使用该语句进行出口条件。
如果说if (n == 1)是判断条件的话,那后面的return 1指的是什么,我尝试过如果写成-1,则会返回5048,这是少计算了一次么?
相关代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>递归</title>
</head>
<body>
<script>
function sum(n) {
if (n == 1) return 1;
return n + sum(n-1);
}
alert(sum(100));
</script>
</body>
</html>
1回答
同学你好,解答如下:
递归出口是什么,要具体问题具体分析,不是固定的。比如4-2这个习题,想求1-100的和,递归中的计算过程如下:
sum(100),初始的参数是100,此时会返回“100+sum(99)”,即sum(100)=100+sum(99),含义是:数字100与前99个数的和(sum(99))加起来就是1-100的和。
而sum(99)又等于99+sum(98),即sum(99)等于数字99与前98个数的和(sum(98))。
以此类推,sum(100)=100+99+98+...+2+sum(1),其中sum(1)就是前一个数的和,就是数字1的和,所以sum(1)这个出口是1:
递归是比较难的知识点,尤其是出口问题,很多人都想不明白,实际开发中用的并不多,所以不用急,只要学会课程中涉及到的这些例子就可以了。
祝学习愉快!
相似问题
回答 3
回答 2