【C++】斐波那契數列前N項的和遞迴與非遞迴演算法
定義:斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞迴的方法定義:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)。
下面給出斐波那契數列前N項的和遞迴與非遞迴演算法。
遞迴演算法:
非遞迴演算法:#include <iostream> using namespace std; int fibo(int n) { if(n==0) return 0; else if(n==1) return 1; else return fibo(n-1)+fibo(n-2); } int main() { int n; cout<<"請輸入數列的範圍:"; cin>>n; cout<<"斐波那契數列前"<<n<<"項如下:"<<endl; for(int i=1;i<=n;i++) cout<<fibo(i)<<"\t"; if (i%5==0) cout<<endl; return 0; }
#include <iostream> using namespace std; void fibo(int n) { int a[200],i; a[0]=a[1]=1; for(i=2;i<n;i++) a[i]=a[i-1]+a[i-2]; for (i=1;i<=n;i++) { cout<<a[i-1]<<"\t"; if(i%10==0) cout<<endl; } } int main() { int n; cout<<"請輸入數列的範圍:"; cin>>n; cout<<"斐波那契數列前"<<n<<"項如下:"<<endl; fibo(n); cout<<endl; return 0; }
PS:新手一枚~有什麼錯誤或建議歡迎指出~
相關推薦
【C++】斐波那契數列前N項的和遞迴與非遞迴演算法
定義:斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、1
【Java】斐波那契數列前N項(堆疊演算法)
堆疊是一種很靈活的"後進先出"資料結構,使用堆疊可以節省記憶體的開銷。比如,遞迴是一種很消耗記憶體的演算法,可以藉助堆疊消除大部分遞迴,達到和遞迴演算法同樣的目的。 下面用例子實現求斐波那契數列前N項
求斐波那契數列前n項的值
Description 輸入n,求斐波那契數列前n項的值。斐波那契數列規律如下:1, 1, 2, 3, 5, 8, 13,21, 34,55…,從第三項開始,每一項都是前面兩項的和。 Input 輸入正整數n。 Output 輸出斐波那契數列的前n項值 Sample Input
【數論】斐波那契數列求和公式
斐波那契數列: F(n)=F(n-1)+F(n-2); 其中, F1=1, F2=1. 斐波那契數列求和公式: Sn = 2F(n) + F(n-1) - 1 Sn = F1 + F2 + F3 +……+
【轉】斐波那契數列取模(大數)分治演算法
此中測試資料n是整數侷限內。 這個題目,主如果用到很關鍵的一個數學常識,斐波那契數列的求法,可以轉換為矩陣的連乘,矩陣的n此方演算法又可以用分治的演算法。 並且又有理論根據:(n*m)%c=[ (n%c)*(m%c) ]%c ; (n+m)%c=[ (n%c)+(m%c) ]%c ,所以過程中的成果可以
斐波那契數列第N項(C++)
求斐波那契數的第N項,N可以很大但結果不能超過1000位; #include <iostream> #include <memory.h> #include <strin
斐波那契數列第N項f(N)[矩陣快速冪]
string sin int code char const mat ret truct 矩陣快速冪 定義矩陣A(m*n),B(p*q),A*B有意義當且僅當n=p。即A的列數等於B的行數。 且C=A*B,C(m*q)。 例如: 進入正題,由於現
使用線性代數求解斐波那契數列第n項
一:問題 已知斐波那契數列,f1=1,f2=1,f3=3,f4=5...求第n項的數值 二:問題轉化為線性代數問題 可以得到方程 f(n+2)=f(n+1)+f(n) 為了解決問題,新增方程 f(n+1)=f(n+1) 記向量,則上兩式可以寫作 要求,只需知道,
斐波那契數列第n項的三種求法
方法1: 利用遞迴方法,但是遞迴看似簡單但是無法處理較大的項數,時間複雜度為o(2^n)。 public class fib_遞迴 { /** * @param args */ public static
java遞迴求斐波那契數列第n項
public class Fibonacci { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int f
遞迴用python求解斐波那契數列第n項
波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的
求解斐波那契數列第n項(JavaBigInteger之自底向上迭代)
import java.math.BigInteger; import java.util.*; public class Fab //用迭代法自底向上求解斐波那契數列第n項 { publi
求斐波那契數列第N項的最後一位
RT,該怎麼求呢? 首先,你可能會想到,順序遍歷求解。 利用通項公式,可以得到斐波那契序列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34... 那每一項的最後一位就是: 0, 1, 1, 2, 3, 5, 8, 3, 1, 4... 這樣做的效
Java練習題-求斐波那契數列第n項
/** * 求斐波那契數列第n項,n<30,斐波那契數列前10項為 1,1,2,3,5,8,13,21,34,55 * @author Tang * */ public clas
斐波那契數列第N項
#include<stdio.h> int FibonacciSequence(int n) { int f1=1; int f2=1; int f3=1; for(int i=3;i<=n;i++) { f3=f1+f2; f1=f2;
斐波那契數列第n項的高效解法
參考書籍《劍指Offer》 常見解法 談及斐波那契數列,我們直接就可以想到f(n)=f(n-1)+f(n-2)。於是做出如下解: long long Fibonacci(unsigned
矩陣快速模冪 + 求斐波那契數列第n項(Fibonacci)
兩矩陣相乘,樸素演算法的複雜度是O(N^3)。如果求一次矩陣的M次冪,按樸素的寫法就是O(N^3*M)。既然是求冪,不免想到快速冪取模的演算法,前面有快速冪取模的介紹,a^b %m 的複雜度可以降
【劍指offer】斐波那契數列 遞迴 迴圈 時間 c++
題目:大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。n<=39 思路:可以用兩種方法實現,這裡遞迴的辦法因為有太多重複的計算會超時(計算n=39,需要4s左右,題目要求1s),遂改用迴圈語句寫(經測試n=39時,完全小於1s),下面的程式碼中也給
【C語言】斐波那契數列的兩種演算法(迴圈,遞迴)
#include<stdio.h> int Fabio(int n) //迴圈 { int i; int f1 = 1; int f2 = 1; int f3 = 1; for(i = 2;i<n;i++) { f3 = f1 + f
【演算法 in python | DP】斐波那契數列vs卡塔蘭數列
1. 斐波那契數列 公式: 應用:爬樓梯 假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢? class Solution: def climbStairs(self, n):