求最小步数变为斐波那契数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guorong520/article/details/81234073

一、解析:
当我们一步一步走的时候,一边计算斐波那契数,一边计算左边的数和输入的N值进行差值运算,直到N比斐波那契数小就直接退出。
二、代码

int main()
{
    int a=0;
    int b=1;
    int c=1;
    int left=0;
    int right=0;
    int N=0;
    cin>>N;
    while(1)  
    {
        a=b;
        b=c;
        c=a+b;
        if(c<N)
        {
            left=N-c;  //左区间步数
        }
        else
        {
            right=c-N;  //右区间步数
            break;  //循环结束
        }
    }
    cout<<min(left,right);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/guorong520/article/details/81234073