“斐波那契數列”問題的遞推演算法
/*
標題:<<系統設計師>>應試程式設計例項-[遞推演算法程式設計]
作者:成曉旭
時間:2002年09月11日(11:52:00-16:26:00)
實現遞推演算法的大整數階乖處理函式
時間:2002年09月16日(18:38:00-20:02:00)
實現“斐波那契數列”問題的遞推演算法函式
*/
#include "stdio.h"
#include "stdlib.h"
//:============================“斐波那契數列”問題的遞推演算法===========================
/*
問題描述:
標準斐波那契數列:
F(0) = 0,F(1) = 1,Fn) = F(n-2) + F(n-1)(當n > 1時)
廣義斐波那契數列:
F(0) = 0,F(1) = 0,F(2) = 1,Fn) = F(n-3) + F(n-2) + F(n-1)(當n > 2時)
*/
//標準斐波那契數列的遞推演算法函式
int Std_Fibonacci(int number)
{
int f0 = 0,f1 = 1,result,loop; //初始值1,2,返回結果,迴圈計數器
if(number == 0) return(0);
if(number == 1) return(1);
for(loop = 2;loop <= number;loop ++)
{
result = f0 + f1; //由前兩步的結果計算當前結果--->“推出”
f0 = f1; //把原來的前一步當作下一次的前兩步--->“傳遞”
f1 = result; //把當前結果當作下一次的前一步--->“傳遞”
}//注意:在進行這種向前傳遞的操作時,特別小心傳遞的時序
return(result);
}
//廣義斐波那契數列的遞推演算法函式
int Ext_Fibonacci(int number)
{
int f0 = 0,f1 = 0,f2 = 1,result,loop; //初始值1,2,3,返回結果,迴圈計數器
if(number == 0 || number == 1) return(0);
if(number == 2) return(1);
for(loop = 2;loop <= number;loop ++)
{
result = f0 + f1 + f2; //由前三步的結果計算當前結果
f0 = f1;
f1 = f2;
f2 = result;
}//注意:在進行這種向前傳遞的操作時,特別小心傳遞的時序[即:變數間賦值的前後關係及先後順序]
return(result);
}
void Run_Fibonacci()
{
int large,result;
while(large!=9910)
{
printf(" 請輸入斐波那契數列的元素個數[Enter '9910' to Exit]: ");
scanf("%d",&large);
if(large!=9910)
{
//result = Std_Fibonacci(large);
result = Ext_Fibonacci(large-1);
printf("斐波那契資料中的第[%d] = %d ",large,result);
}
}
}
//:============================“斐波那契數列”問題的遞推演算法===========================
標題:<<系統設計師>>應試程式設計例項-[遞推演算法程式設計]
作者:成曉旭
時間:2002年09月11日(11:52:00-16:26:00)
實現遞推演算法的大整數階乖處理函式
時間:2002年09月16日(18:38:00-20:02:00)
實現“斐波那契數列”問題的遞推演算法函式
*/
#include "stdio.h"
#include "stdlib.h"
//:============================“斐波那契數列”問題的遞推演算法===========================
/*
問題描述:
標準斐波那契數列:
F(0) = 0,F(1) = 1,Fn) = F(n-2) + F(n-1)(當n > 1時)
廣義斐波那契數列:
F(0) = 0,F(1) = 0,F(2) = 1,Fn) = F(n-3) + F(n-2) + F(n-1)(當n > 2時)
*/
//標準斐波那契數列的遞推演算法函式
int Std_Fibonacci(int number)
{
int f0 = 0,f1 = 1,result,loop; //初始值1,2,返回結果,迴圈計數器
if(number == 0) return(0);
if(number == 1) return(1);
for(loop = 2;loop <= number;loop ++)
{
result = f0 + f1; //由前兩步的結果計算當前結果--->“推出”
f0 = f1; //把原來的前一步當作下一次的前兩步--->“傳遞”
f1 = result; //把當前結果當作下一次的前一步--->“傳遞”
}//注意:在進行這種向前傳遞的操作時,特別小心傳遞的時序
return(result);
}
//廣義斐波那契數列的遞推演算法函式
int Ext_Fibonacci(int number)
{
int f0 = 0,f1 = 0,f2 = 1,result,loop; //初始值1,2,3,返回結果,迴圈計數器
if(number == 0 || number == 1) return(0);
if(number == 2) return(1);
for(loop = 2;loop <= number;loop ++)
{
result = f0 + f1 + f2; //由前三步的結果計算當前結果
f0 = f1;
f1 = f2;
f2 = result;
}//注意:在進行這種向前傳遞的操作時,特別小心傳遞的時序[即:變數間賦值的前後關係及先後順序]
return(result);
}
void Run_Fibonacci()
{
int large,result;
while(large!=9910)
{
printf(" 請輸入斐波那契數列的元素個數[Enter '9910' to Exit]: ");
scanf("%d",&large);
if(large!=9910)
{
//result = Std_Fibonacci(large);
result = Ext_Fibonacci(large-1);
printf("斐波那契資料中的第[%d] = %d ",large,result);
}
}
}
//:============================“斐波那契數列”問題的遞推演算法===========================
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=935927
相關文章
- 斐波那契數列
- 斐波那契數列演算法演算法
- 演算法(1)斐波那契數列演算法
- 斐波那契數列(Java)Java
- 大數斐波那契數列的演算法演算法
- 面試題9-斐波那契數列面試題
- 演算法一:斐波那契阿數列演算法
- 計算斐波那契數列的演算法演算法
- 斐波那契數列 (C#)C#
- PHP 與斐波那契數列PHP
- 斐波那契數列詳解
- 【演算法】Fibonacci(斐波那契數列)相關問題演算法
- 斐波那契數列的遞迴和非遞迴實現遞迴
- 斐波那契數
- fibonacci斐波那契數列詳解 遞迴求Fn非遞迴求Fn求n最近的斐波那契數遞迴
- 斐波那契數列演算法 JS 實現演算法JS
- js實現斐波那契數列JS
- 斐波那契數列js 實現JS
- 斐波那契數列Ⅳ【矩陣乘法】矩陣
- 【刷演算法】我知道的所有類似斐波那契數列的問題演算法
- [C103] 斐波那契數列
- 斐波那契數列的分治法計算
- 斐波那契數列的python實現Python
- JavaScript斐波納契數列非遞迴演算法JavaScript遞迴演算法
- 斐波那契數列(Fibonacci)遞迴和非遞迴實現遞迴
- 每日一算 -- 斐波那契數列型別題型別
- 使用Python實現斐波那契數列Python
- JavaScript 實現:輸出斐波那契數列JavaScript
- js迭代器實現斐波那契數列JS
- 斐波那契問題和擴充套件套件
- 【演算法詳解】斐波那契數列 - Fibonacci sequence演算法
- Leedcode-斐波那契數
- 演算法 - 斐波那契 - javascript 版演算法JavaScript
- 斐波那契數列的通項公式及證明公式
- 斐波那契數列三種實現函式函式
- 劍指offer-9-斐波那契數列-javaJava
- hdu 3117矩陣+斐波那契數列矩陣
- 面試:老師講的遞迴解決斐波那契數列真的好嗎面試遞迴