此代码适用于10个以下斐波那契数字。但我想知道这是递归函数与否。斐波那契系列的基本公式为f(n)=f(n-1)+f(n-2)
。使用这个我想要一个斐波纳契程序。我试过这个,但时间的复杂性更多的是在程序之上几乎没有变化的原因。
int n=10,i,f0=1,f1=1,f2;
for(i=1;i<=n;i++)
{
System.out.println(f0);
f2=f0+f1;
f0=f1;
f1=f2;
f2=f0;
}
答案 0 :(得分:4)
根据定义,递归是一个调用自身的函数(直接或间接)。
除println()
之外,您的程序中没有函数调用。因此不,它不是递归的。
这是一个简单的迭代算法。
事实上,直接的递归实现对于这个问题不是一个好的选择,因为它会具有指数时间复杂度。
答案 1 :(得分:0)
这是迭代,因为你有循环,你不是一次又一次地调用相同的方法。如果您有类似方法调用自身的方法,您可以将方法称为resursive,如下所示:
public int addNumbers(int number) {
if (number <= 0) {
return 0;
}
return number + addNumbers(number - 1);
}
答案 2 :(得分:0)
这不是递归的,因为该函数不会自己调用
这是:
int fib(int n){
if(n<2)
return n;
return fib(n-1) + fib(n-2);
}
正如您所看到的方法fib
自称:fib(n-1)
和fib(n-2)
答案 3 :(得分:0)
这不是递归,因为没有直接或间接的递归调用。基于较小参数的结果(也称为dynamic programming)迭代地完成评估。但是,在此实现中,并非所有中间结果都保留,因此只需要一定数量的变量。