📌  相关文章
📜  C程序在不使用循环的情况下打印Fibonacci系列

📅  最后修改于: 2021-05-28 04:50:29             🧑  作者: Mango

给定数字N ,任务是不使用任何循环就打印Fibonacci系列直到第N个数字。

例子:

方法1:使用goto语句: goto语句是一个跳转语句,有时也称为无条件跳转语句。它可用于从函数的任何位置跳转到任何位置。步骤如下:

  1. 声明3个int变量absuma是第一个值, b是第二个值,a + b的加法。
  2. 使用标签创建带有goto语句的循环。
  3. 如果条件为true则检查if-else,则它将继续执行程序,否则将终止该程序。
  4. 打印sum,因为sum的值现在为0,然后将交换的概念用作:
    sum = a + b
    a = b
    b = sum
    

下面是上述方法的实现:

// C program to print fibonacci series
// using goto statement
#include 
  
// Function to print Fibonacci Number
// using goto statement
void fibUsingGoto(int N)
{
    int a = 0, b = 1, sum = 0;
lableFib:
  
    // Print to series first N term
    if (N != 0) {
  
        // Print series
        printf(" %d", a);
  
        // Create next term
        sum = a + b;
        a = b;
        b = sum;
  
        // Decrement N
        N--;
  
        // Jump to lableFib
        goto lableFib;
    }
}
  
// Driver Code
int main()
{
    // Given number N
    int N = 10;
  
    // Function Call
    fibUsingGoto(N);
  
    return 0;
}
输出:
0 1 1 2 3 5 8 13 21 34

时间复杂度: O(N)
辅助空间: O(N)

方法2 –使用递归:

  1. 声明三个变量a,b,总和分别为0、1和0
  2. 用第一项,第二项和斐波那契数列的当前和递归调用fib()函数。
  3. 在主函数调用fib()函数, fib()函数称为self,直到计算出N个斐波那契数列。
  4. 如下所示,在每个递归调用中更新a,b和sum的值:
    sum = a + b
    a = b
    b = sum
    

下面是上述方法的实现:

// C program to print fibonacci
// series using recursion
#include 
  
// Recursive function to print
// Fibonacci series
void fib(int a, int b, int sum, int N)
{
  
    // Print first N term of the series
    if (N != 0) {
  
        printf(" %d", a);
        sum = a + b;
        a = b;
        b = sum;
  
        // Decrement N
        N--;
  
        // recursive call function fib
        fib(a, b, sum, N);
    }
}
  
// Driver Code
int main()
{
    // Given Number N
    int N = 10;
  
    // First term as 0
    // Second term as 1 and
    // Sum of first and second term
    fib(0, 1, 0, N);
    return 0;
}
输出:
0 1 1 2 3 5 8 13 21 34

时间复杂度: O(N)
辅助空间: O(N)

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。