【发布时间】:2018-04-11 01:52:24
【问题描述】:
知道为什么我的代码在前几个之后给出了错误的答案吗?
My university professor provided us with this to go by and I feel I followed it?
例如,如果我要使用:
System.out.println(fibr(8));
System.out.println(fibr(9));
System.out.println(fibr(10));
控制台打印出: 11 34 20
这当然不是那些地方的斐波那契数
public static int fibr(int n) {
if(n<0) return 0;
if(n==0) return 0;
if(n==1) return 1;
if(n==2) return 1;
//is odd
// n is = or > 3 and NOT (n divided by 2 with remainder of 0 (making it even))
if(n >= 3 && !(n % 2 == 0)) {
int a;
a = fibr((n+1)/2) * fibr((n+1)/2);
a = a + (fibr((n-1)/2) * fibr((n-1)/2));
return a;
}
//is even
if(n >= 3 && (n % 2 == 0)) {
int a;
a = fibr((n/2)+1) + fibr((n/2)-1) * fibr(n/2);
return a;
}
return 0;
}
帮忙看看有什么问题
【问题讨论】:
-
你的公式在我看来完全错误。我猜这是问题的根源。
-
这是我大学给我的?
-
你有没有问过教授为什么他们的 fib 公式与标准实现不同?
标签: java data-structures computer-science fibonacci