java写的fibnacci数列,求第n位数和1-n位数的和。有地方不懂。
import java.util.Scanner;
public class F{
private static int s;
private static int sum=0;//存放n位数的和
public static int Fib(int n){
if(n==1){
s=1;
sum=1;
}
else if(n==2){
s=1;
sum=2;
}
else {
s=Fib(n-2)+Fib(n-1);//递归
sum=sum+s;//求和
}
return s;
}
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);//从控制台输入数据
int p = sc.nextInt();
System.out.println(Fib(p));//输出第n位数是多少
System.out.print(sum);//输出前n位数的和
}
}
为什么改s=Fib(n-2)+Fib(n-1)成为s=Fib(n-1)+Fib(n-2)的时候,求和的时候出错了,求n位数没有错。求高人看下,谢谢!
[解决办法]
太高深了,给你一个更简单的能达到同样效果的代码。
public class FibNumber {
static int f(int n) {
int s;
if(n==1
[解决办法]
n==2) {
return s=1;
} else {
return s=f(n-2)+f(n-1);
}
}
public static void main(String[] args) {
int sum =0;
for(int i=1;i<=10;i++) {
sum+=f(i);
}
System.out.println(f(10));
System.out.println(sum);
}
}
[解决办法]
s = Fib(n - 2) + Fib(n - 1);//递归
s = Fib(n - 1) + Fib(n - 2) ;// 递归