【发布时间】:2012-04-15 10:05:38
【问题描述】:
我有这个代码:
#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);?
有人可以指点我吗?
【问题讨论】:
-
在函数体
func中,您在初始化之前使用了nFinal。这是正确的吗? -
@Chris 对不起。 nFinal 初始化为零