“斐波那契数列”问题的递推算法

    技术2022-05-11  4

    /*    标题:< <系统设计师> >应试编程实例-[递推算法程序设计]     作者:成晓旭     时间: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


    最新回复(0)