了解递归函数是如何工作的
正如标题所解释的那样,我有一个非常基本的编程问题,只是我还不能摸索。过滤掉所有的(非常聪明的)“为了理解递归,你必须首先理解递归。来自各种在线帖子的回复,我仍然不太明白。
当我们面对不知道我们不知道的事情时,我们会倾向于提出错误的问题或不正确地提出正确的问题-我会分享我的“想法”,我的问题是希望有类似观点的人能够分享一些知识,帮助我打开递归灯泡!
下面是函数(语法用SWIFT编写):
func sumInts(a: Int, b: Int) -> Int {
if (a > b) {
return 0
} else {
return a + sumInts(a: a + 1, b: b)
}
}
我们将使用2和5作为我们的论点:
println(sumInts(a: 2, b: 5))
显然答案是14,但我不清楚这个价值是如何实现的。
这是我的两个大杂烩:
函数被递归调用,直到满足条件为止。该条件为a>b。当满足此条件时,返回0。乍一看,我希望返回值为0,这显然是不正确的。
在每次迭代中打印出‘a’值将产生一个我所期望的值:2、3、4、5(在这里,5+1>b满足第一个条件:a>b),但我仍然不知道如何实现14的值。
我的第一个想法是,类似的事情正在神奇地发生:
var answer = a;
answer += a+1 until a > b;
return answer;
所以排除魔法,我就是得不到什么。我很想知道发生了什么,而不仅仅是含蓄的。
如果有人能很好地解释这种函数在技术上发生了什么,为什么结果不是0,以及最终结果是怎样的,a + sumInts(a: a + 1, b: b) = 14
我会永远欠你的。