C++递归调用执行步骤是什么

2025-01-06 18:08:16
推荐回答(2个)
回答1:

令 f(x) = x!
那么 有 f(0) = 1
f(1) = 1 * f(0)
f(2) = 2 * f(1)
……
f(n) = n * f(n-1), 其中 n∈Z+

用代码写,首先f(0) = 1就是
int f(int x) {
if (x == 0) return 1;
}
然后加入 f(n) = n * f(n-1),变成
int f(int x) {
if (x == 0) return 1;
else return x * f(x - 1);
}
于是这就是阶乘的函数的递归写法

回答2:

核心就是两句话:
从一端(未知)向另一端(已知)求值(专业术语:回溯);
再从已知端往未知端逐一返回值(专业术语:递推).

注意:如果另一端仍然是未知数,则它就陷入死循环,它会无休无止地自我调用下去,就是我们通常所说的递归出口。递归另一端要有具体的值就是递归出口的条件。
拿阶乘为例: if(n==1) return 1;这条语句就是递归出口。