/**/
/* 标题:<
<系统设计师>
>应试编程实例-[递推算法程序设计]
作者:成晓旭
时间: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
转载请注明原文地址: https://ibbs.8miu.com/read-900340.html