【问题标题】:How to make Fibonacci series to print out single digit如何使斐波那契数列打印出单个数字
【发布时间】:2020-05-29 07:12:42
【问题描述】:

下面是我第一年提交的一个小项目。但是在该系列中,奇数输入不会打印该系列中的数字,而是将奇数加一,然后变成偶数,然后打印出该系列中的该数字。我也想让它接受奇数。怎么做?我想过有两个while循环,但我不确定。

我的代码(没有头文件和主要功能)

                int N;
                printf("Welcome to Fibonacci Series Mode.\n\nEnter how many numbers do you want from the series, from the start (Only Even Numbers): ");
                scanf("%d", &N);
                float x = 0;
                float y = 1;
                float xy;
                int F = 1;
                while ( F <= N ){
                    printf("\n%.0lf", x);
                    Sleep(250);
                    printf("\n%.0lf", y);
                    Sleep(250);
                    xy = x + y;
                    y += xy;
                    x = xy;
                    F++;
                }

【问题讨论】:

  • 在循环内打印一个数字
  • @pmg 第二个数字呢,两个数字都必须存在才能打印完整的系列。如果未打印 x 或 y 之一,则系列中将缺少数字。
  • 一般情况下,你应该在消息的末尾输出换行符,而不是开头。这样printf("\n%.0lf", x); 就变成了printf("%.0lf\n", x);
  • ideone.com/H0JYcs --- 我明白了...打印一个数字并计算一个数字:对于斐波那契数列,您可以一次推进一个。
  • @pmg 那么如何让它一次打印 1 个,奇数呢?

标签: c


【解决方案1】:

我从您的代码以及您的问题中了解到的是,当前代码仅打印偶数的斐波那契数。正如您所看到的那样,这是真的,在 while 循环中,有两个数字在同一个迭代中打印。因此,如果您想要系列中的奇数个数字,则必须一次打印一个数字。

另外,请注意您的代码中发生了什么。 最初x = 0, y = 1
然后,xy = 0 + 1 = 1,(斐波那契数列中的第三个数字)

在下一行,y 比xy 领先一步。
那是y = y + xy,这意味着如果xy 变量包含斐波那契数列中的第n 个数字,那么,在这个赋值变量y 保存了系列的n+1th 编号。并且设置x = xy 得到n th term。

因此,在 while 循环的每次迭代中,您都打印了斐波那契数列的两个值,变量 xy 同时向前跳跃了两步。

为了支持奇数,我会做如下的事情。注意我使用的是整数类型变量,因为斐波那契数列中的所有数字都是整数。

void print_first_n_fibo( int n ){
    int x = 0, y = 1;
    if(n == 1){
        printf("0\n");
    }
    else if(n == 2){
        printf("0\n1\n");
    }
    else{
        int current_term = 3;
        while(current_term <= n){
            int xy = x + y;
            printf("%d\n",xy);
            x = y;
            y = xy;
            current_term++;
        }
    }

}

这个函数是泛化的。它打印斐波那契数列的任何第一个 n 项,无论 n 是偶数还是奇数。

【讨论】:

    猜你喜欢
    • 2015-01-04
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多