我有这个代码:
#include <stdio.h>
#include <stdlib.h>
int func(int n0, int n);
int main ()
{
int n0, n, nFinal=0;
printf ("Enter constant (n0): ");
scanf ("%d", &n0);
printf ("Enter the number of iteractions (n): ");
scanf ("%d", &n);
nFinal = func(n0, n);
printf ("nFinal after %d iteractions is %d: \n", n, nFinal);
return 0;
}
int func(int n0, int n){
int i,nFinal=0;
for (i = 0; i < n; i++){
nFinal = (nFinal*nFinal) + n0;
}
return nFinal;
}
nFinal 是在 for 循环内计算的。我想获得相同的结果,但执行递归函数。
据我所知,我无法更改函数调用,因为我始终需要起始编号和迭代次数。因此,在第一次迭代之后,程序必须再次调用 nFinal = func (n0, n);
但由于我需要在 nFinal 的计算值的每次迭代中,我必须更改它。
是否可以创建一个递归函数,但将函数保持为 nFinal = func (n0, n);
?
有人可以指点我吗?
最佳答案
查看你的函数
int func(int n0, int n){
int i,nFinal=0;
for (i = 0; i < n; i++){
nFinal = (nFinal*nFinal) + n0;
}
return nFinal;
}
如果 n 小于(小于)0,则结果为 0。那么 nFinal 的新值就是 nFinal^2 + n0 的旧值,因此得到:
int func(int n0, int n){
if (n <= 0) return 0;
int f = func(n0, n-1);
return f*f + n0;
}
关于C 递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10161073/