【发布时间】:2016-02-18 03:48:40
【问题描述】:
我有相同函数的两个版本的代码:一个迭代和一个递归。我想知道为什么返回类型是int。它能给你带来什么?为什么返回类型不能是double?
public static int iterative(int n){
int var=1;
int var1=1;
int var2=1;
if (n<=1) {
return 1;
}
for(int i=2;i<=n;i++){
var=var1+var2+1;
var2=var1;
var1=var;
}
return var;
}
private static int recursive(int n){
if (n<=1){
return 1;
}
return rec(n-1)+rec(n-2)+1;
}
public static void main(String[] args) {
System.out.println(iter(10));
}
【问题讨论】:
-
猜测,因为这就是作者想要的。返回类型可以是double、float、long、......
-
为什么要这样? fibonnaci 的结果总是一个整数。所以不需要为双精度(双精度64位,整数32位)浪费内存
-
如果您将
private static int更改为private static double它应该仍然有效 - 至少对于rec -
任务说 L(0) = 1 L(1) = 1 L(n) = L(n - 1) + L(n - 2) + 1 当 n > 1. 和 i必须打印从 0 到 30 的数字。当它是 double 时会发生什么?
-
结果看起来像 1.0, 2.0, 3.0, 5.0, 8.0 ...