永远不会满足终止条件,所以这是无限递归。 (我真的很惊讶,没有堆栈溢出异常)。终止条件是当n = 0,但每一个递归调用只是增加了1:n*(n+1)/2
另外,你的意思是包括乘法作为参数传递给下一个递归调用,而不是像
n * recSum (n+1)/2
东西(请原谅,如果语法不完美,我不在IDE的前面)。
也许你打算减去而不是添加?
作为一个小题外话,你最终选择什么样的终止条件取决于你想要完成什么以及你试图实现什么样的公式。很多人都认为从现在的价值“下降”到终止条件。例如,如果您在谈论斐波纳契数字,大多数人会认为这只是“前两个斐波纳契数字的总和”(两者都是前两个斐波纳契数字的总和,全部方式“下降”到终止条件)。这是完全正确的;例如,定义5是完全正确的!为5 * 4 !.
您也可以将其视为终止条件下的“后处理”。这样想一想:如果我让你告诉我10的价值!你几乎肯定无法告诉我没有使用计算器的价值。但是,如果我告诉你那9!是362880?那么,你显然可以乘以10来得到10!所以显然答案必须是3628800。既然如此,什么是11!?显然,11 * 3628800。所以,如果我给你一个价值,你可以使用该值来“生成”更多的价值。给定9!的值,除了乘以10得到10!之外,你不需要做任何事情。
对于这个问题,实际上,鉴于你对10事实的了解! = 3,628,800,你可以轻松计算9!除以3,628,800除以10.
无论采用哪种方式,点都是一样的:给定序列中的任何值,就可以应用这些值来计算序列中的更多值。
从这个意义上讲,你可以实际上称终止条件为我猜测的排序的“初始条件”。
希望这种离题有道理,如果没有,我会很乐意根据需要澄清它。
你能澄清你想要完成什么吗?如下所述,这是无限递归,因此您需要实现一个不同的公式,如果我们有关于需求的更多细节,也许我们可以帮助找出一个新的公式。 – EJoshuaS
终止所有已知输入的类似过程是[Collatz猜想](https://en.wikipedia.org/wiki/Collatz_conjecture)核心的功能:*半或三加一*。我不确定你的栈的限制是多少,但是如果你可以堆栈1228个函数调用,你可以在任何输入达到1000亿时达到0。 –