- </pre><pre name="code" class="cpp">#include<iostream>
- #include <stack>
- using namespace std;
-
- struct stackNode
- {
- int data;
- int state;
- stackNode()
- {
- data = 0;
- state = 2;
- }
- stackNode( int d, int s)
- {
- data = d;
- state = s;
- }
- };
-
- int Fibnacci( int n )
- {
- stack<stackNode> fstack;
- int res = 0;
- if( n < 0 )
- {
- return res;
- }
- fstack.push( stackNode( n, 2) );
-
- while( !fstack.empty() )
- {
- if( fstack.top().state == 0)
- {
- fstack.pop();
- if( !fstack.empty() )
- {
- fstack.top().state -= 1;
- }
- }else if( fstack.top().state == 2 )
- {
- if( fstack.top().data > 1 )
- {
- fstack.push( stackNode( fstack.top().data - 1 , 2) );
- }else if( fstack.top().data == 1 )
- {
- res += 1;
- fstack.pop();
- if( !fstack.empty() )
- {
- fstack.top().state -= 1;
- }
- } else if( fstack.top().data == 0 )
- {
- res += 0;
- fstack.pop();
- if( !fstack.empty() )
- {
- fstack.top().state -= 1;
- }
- }
- }else if( fstack.top().state == 1 )
- {
- fstack.push( stackNode( fstack.top().data - 2 , 2) );
- }
- }
- return res;
- }
- int main()
- {
- for( int i = -1 ; i< 10 ; i++)
- {
- cout<<Fibnacci(i)<<endl;
- }
- return 0;
- }
![]()
posted @
2017-05-29 16:19
天涯海角路
阅读(
522)
评论()
收藏
举报