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

沒有留言:

張貼留言