package txlong.practice; import java.util.Scanner; import org.junit.Test; /** * 使用迭代和遞歸求 斐波那契數(shù)列 * @author txlong2012 * */ public class FeiboqienaSequence { @Test public void test() { // int result = getByIteration(); System.out.println(getByRecursion()); } /** * 迭代實(shí)現(xiàn)斐波那契數(shù)列 * @return 輸出最后一個(gè)序列值,別切打印出整個(gè)斐波那契數(shù)列 */ public int getByIteration() { int result = 0; Scanner scanner = new Scanner(System.in); int n = Integer.parseInt(scanner.next().trim()); while( n < 0) { System.out.println("必須輸入一個(gè)正整數(shù)"); n = Integer.parseInt(scanner.next().trim()); } scanner.close(); if(n == 1|| n== 2) { result = 1; if(n == 1){ System.out.print("得到斐波切納序列:" + 1 +"\t"); }else{ System.out.print("得到斐波切納序列:" + 1 +"\t" + 1 + "\t"); } }else { int f0 = 1; int f1 = 1; int count = 3; System.out.print("得到斐波切納序列:" + f0 +"\t" + f1 + "\t"); while( count <= n){ result = f0 + f1; System.out.print(result + "\t"); f0 = f1; f1 = result; count++; } } return result; } /** * 從控制臺(tái)獲取斐波那契的輸入?yún)?shù) n * @return 數(shù)列最后一個(gè)數(shù)值 */ public int getByRecursion() { int result = 0; Scanner scanner = new Scanner(System.in); int n = Integer.parseInt(scanner.next().trim()); while( n < 0) { System.out.println("必須輸入一個(gè)正整數(shù)"); n = Integer.parseInt(scanner.next().trim()); } scanner.close(); return recursion(n); } /** * 遞歸實(shí)現(xiàn)斐波那契數(shù)列 * @param n 斐波那契參數(shù) * @return 數(shù)列最后一個(gè)數(shù)值 */ public int recursion(int n) { if(n == 1 || n == 2) { return 1; } return recursion(n-1) + recursion(n - 2); } } |
|