斐波那契数列之经典兔子问题

—经典兔子问题

//递归写法O(2n)
int Fib(int day)
{
    if (day <= 1)
        return day;
    else
        return Fib(day - 1) + Fib(day - 2);
}
int main()
{
    while (1)
    {
        int day;
        printf("请输入天数:");
        scanf("%d", &day);
        printf("第%d天共%d对兔子\n\n", day,Fib(day));
    }
    system("pause");
    return 0;
}

//优化 O(n)
int main()
{
    while (1)
    {
        int day;
        printf("请输入天数:");
        scanfint("%d", &day);
        int i = 0;
        int j = 1;
        int q;
        int sum = 0;
        if (day < 1)
        {
            printf("天数不能小于1,请重新输入\n\n");
            continue;
        }
        if (day < 3)
            printf("第%d天共1对兔子\n\n",day);
        else
        {
            for (int count = 1; count < day; ++count)
            {
                sum = i + j;
                i = j;
                j = sum;
            }
            printf("第%d天共%d对兔子\n\n", day, sum);
        }
    }
    system("pause");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/wsq119/article/details/80627828