给定数字N ,任务是不使用任何循环就打印Fibonacci系列直到第N个数字。
例子:
Input: N = 5
Output: 0 1 1 2 3
Input: N = 10
Output: 0 1 1 2 3 5 8 13 21 34
方法1:使用goto语句: goto语句是一个跳转语句,有时也称为无条件跳转语句。它可用于从函数的任何位置跳转到任何位置。步骤如下:
- 声明3个int变量a , b和sum 。 a是第一个值, b是第二个值,和是a + b的加法。
- 使用标签创建带有goto语句的循环。
- 如果条件为true则检查if-else,则它将继续执行程序,否则将终止该程序。
- 打印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 –使用递归:
- 声明三个变量a,b,总和分别为0、1和0 。
- 用第一项,第二项和斐波那契数列的当前和递归调用fib()函数。
- 在主函数调用fib()函数, fib()函数称为self,直到计算出N个斐波那契数列。
- 如下所示,在每个递归调用中更新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基础课程》。