正如标题所解释的那样,我有一个非常基本的编程问题,我还没有能够理解.过滤掉所有(非常聪明)"为了理解递归,你必须首先理解递归." 各种在线线程的回复我仍然没有得到它.
理解当面对不知道我们不知道的事情时,我们可能倾向于提出错误的问题或者错误地提出正确的问题我会分享我"想"我的问题,希望有类似观点的人可以分享一些一点点知识,有助于我打开递归灯泡!
这是函数(语法用Swift编写):
func sumInts(a: Int, b: Int) -> Int {
if (a > b) {
return 0
} else {
return a + sumInts(a: a + 1, b: b)
}
}
Run Code Online (Sandbox Code Playgroud)
我们将使用2和5作为我们的论点:
println(sumInts(a: 2, b: 5))
Run Code Online (Sandbox Code Playgroud)
显然答案是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;
Run Code Online (Sandbox Code Playgroud)
所以排除了魔法,我只是没有得到什么.我很想知道发生的事情不仅仅是隐含的.
如果有人能够解释在这种功能中技术上发生了什么以及为什么结果不是0以及最终如何a + sumInts(a: a + 1, b: b) = 14
,我将永远负债累累.