现在的位置: 首页 > 综合 > 正文

栈实现斐波那契数列递归过程的非递归模拟

2018年02月23日 ⁄ 综合 ⁄ 共 475字 ⁄ 字号 评论关闭

//斐波那契数列求和的非递归算法

//非递归算法利用栈作工具,栈的数据类型     

struct Node {

        int n,tag;

};

//利用栈作工具,非递归算法

long Fibnacci ( long N )  

{     

    Stack S;   Node w;  long sum = 0;     

    do {  

        while ( N > 1 ) {  

            w.n = N;  w.tag = 1;  S.Push (w);

            N--;  

        }

        //向左递归到底, 边走边进栈

        sum = sum + N;                 

        while ( !S.IsEmpty( ) ) {

            S.Pop(w);

            if ( w.tag == 1 ) {  //改为向右递归

                w.tag = 2;  S.Push (w);

                N = w.n - 2;     

                break;  

           }

        }

    } while ( !S.IsEmpty( ) );   

    return sum;   

}

抱歉!评论已关闭.