/**
* 計算斐波納切數列的第n個值
* @author chibozhou**/
public
class
fibonacci
//n==0
else
if(n==
0)return
0;
//n==1
else
if(n==
1)return
1;
//n>1
else
return fibonacci(n-
1) + fibonacci(n-
2);}
/*** 上述遞迴的**雖然簡單,但所需的記憶體空間很大,
* 而且在遞迴的過程中,有很多計算是重複的,比如:
* fibonacci(6)=fibonacci(5)+fibonacci(4)
* fibonacci(5)=fibonacci(4)+fibonacci(3)
* fibonacci(4)=fibonacci(3)+fibonacci(2)
* 由此可見:fibonacci(4)、fibonacci(3)均被重複計算,
* 因此遞迴的方法在時間和空間上的開銷都很大!
* 是否有比遞迴更好的辦法來實現斐波納切?
*//**
* 遞迴之所以開銷巨大,是因為它是乙個自頂向下的計算過程,
* 要計算fibonacci(n),就需要先計算fibonacci(n-1)和fibonacci(n-2),
* 而在fibonacci(0)被計算出之前,之前所有的函式都處於在記憶體中等待的狀態,都占用著記憶體空間;
* 因此,如果我們採用自底向上的方式,每完成乙個fibonacci函式,就記錄下該值,並釋放其記憶體空間,
* 就能節約記憶體空間。
* 此外,由於fibonacci(n)是由前兩個數相加得到的,
* 因此只要將每次計算結果和前乙個數記錄下來,就能計算出之後值,從而避免了重複計算。
* @param n 斐波納切數列長度
* @return 第n個元素值
*/public
static
intfibonacci_recursion
(int n)
if(n==
0 || n==
1)return n;
//a1用於儲存fibonacci(n-2),a2用於儲存fibonacci(n-1),a3用於儲存fibonacci(n)
int a1=
0,a2=
1,a3=
1;for(
int i=
0;i1;i++)
return a3;}}
/**
* 計算斐波納切數列的第n個值
* @author chibozhou**/
public
class
fibonacci
//n==0
else
if(n==
0)return
0;
//n==1
else
if(n==
1)return
1;
//n>1
else
return fibonacci(n-
1) + fibonacci(n-
2);}
/*** 上述遞迴的**雖然簡單,但所需的記憶體空間很大,
* 而且在遞迴的過程中,有很多計算是重複的,比如:
* fibonacci(6)=fibonacci(5)+fibonacci(4)
* fibonacci(5)=fibonacci(4)+fibonacci(3)
* fibonacci(4)=fibonacci(3)+fibonacci(2)
* 由此可見:fibonacci(4)、fibonacci(3)均被重複計算,
* 因此遞迴的方法在時間和空間上的開銷都很大!
* 是否有比遞迴更好的辦法來實現斐波納切?
*//**
* 遞迴之所以開銷巨大,是因為它是乙個自頂向下的計算過程,
* 要計算fibonacci(n),就需要先計算fibonacci(n-1)和fibonacci(n-2),
* 而在fibonacci(0)被計算出之前,之前所有的函式都處於在記憶體中等待的狀態,都占用著記憶體空間;
* 因此,如果我們採用自底向上的方式,每完成乙個fibonacci函式,就記錄下該值,並釋放其記憶體空間,
* 就能節約記憶體空間。
* 此外,由於fibonacci(n)是由前兩個數相加得到的,
* 因此只要將每次計算結果和前乙個數記錄下來,就能計算出之後值,從而避免了重複計算。
* @param n 斐波納切數列長度
* @return 第n個元素值
*/public
static
intfibonacci_recursion
(int n)
if(n==
0 || n==
1)return n;
//a1用於儲存fibonacci(n-2),a2用於儲存fibonacci(n-1),a3用於儲存fibonacci(n)
int a1=
0,a2=
1,a3=
1;for(
int i=
0;i1;i++)
return a3;}}
查詢斐波納契數列中第N個數
所謂的斐波納契數列是指 前2個數是 0 和 1 第 i 個數是第 i 1 個數和第i 2 個數的和。斐波納契數列的前10個數字是 0,1,1,2,3,5,8,13,21,34 給定 1,返回 0 給定 2,返回 1 給定 10,返回 34 非遞迴方式的 本題是斐波拉契數列的變種,斐波拉契數列常用的解...
查詢斐波納契數列中第 N 個數
所謂的斐波納契數列是指 前兩個數是0和1,第i個數是第i 1個數和第i 2個數的和。eg 斐波納契數列的錢10 個數是指 一般求解斐波納契數列的第n個數的值可以用簡單的遞迴來做,如下 public class solution static int fibonacci int n 遞迴的時間複雜度往...
查詢斐波納契數列中第 N 個數
目錄查詢斐波納契數列中第 n 個數所謂的斐波納契數列是指 前2個數是 0 和 1 第 i 個數是第 i 1 個數和第i 2 個數的和。斐波納契數列的前10個數字是 0,1,1,2,3,5,8,13,21,34 樣例 1 輸入 1 輸出 0 樣例解釋 返回斐波那契的第乙個數字,是0.樣例 2 輸入 2...