2016年11月27日 星期日
使用for迴圈和遞迴方式設計費氏數列
package Method;
/*
* 使用for迴圈和遞迴方式設計費氏數列
* 費氏數列f(0)=0,f(1)=1,f(2)=f(0)+f(1) f(3)=f(1)+f(2)
* 第0項為0和 第1項為1, 第2項開始為前兩項之和
*/
public class Fibonacci { //使用遞迴方式解
public long fibonrecursive(int n){
if(n<=1){
return n;
}
return fibonrecursive(n-1)+fibonrecursive(n-2);
}
public void fibonfor(int n){ //使用for迴圈方式解
long x_1 = 0;
long x_2 = 1;
if(n<=1){
System.out.println("使用迴圈方式當f("+n+")="+n);
System.exit(-1);
}
else{
x_1 = 0;
x_2 = 1;
for(int i=1;i<n;i++){ //重點,條件設i從1開始並<n,這樣才能符合費氏數列規則
x_2 = x_2 + x_1;
x_1 = x_2 - x_1;
}
}
System.out.println("使用迴圈方式當f("+n+")="+x_2);
}
public static void main(String[] args) {
long sum=0;
Fibonacci f1=new Fibonacci();
sum=f1.fibonrecursive(10);
System.out.println("使用遞迴方式當f"+"("+10+")"+"="+sum);
f1.fibonfor(5);
}
}
//0 1 1 2 3
//step1:x_2=1+0 x_1=1-0
//step2:x_2=1+1 x_1=2-1
//step3:x_2=2+1 x_1=3-1
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言