C语言新手练习题之求第n个斐波那契数

2022-11-10 12:39:58

目录前言一、思路1.非递归2.递归二、源代码以及运行截图非递归:递归:总结前言在C语言中,分别用递归和非递归两种方法实现求第n个斐波那契数一、思路首先分析一下关于斐波那契数列的原理:第一个和第二个数都...

目录
前言
一、思路
1.非递归
2.递归
二、源代码以及运行截图
非递归:
递归:
总结

前言

在C语言中,分别用递归和非递归两种方法实现求第n个斐波那契数

一、思路

首先分析一下关于斐波那契数android列的原理:

第一个和第二个数都是1,之后的每个数都是前两个数之和,即:

1,1,2,3,5,8,……

1.非递归

用到了循环相关的知识,

当n>2的时候进入循环,将前两个数相加得到第三个数;

当n<=2的时候跳出循环。

2.递归

观察斐波那契数列可以得到一个公式:

gif.latex?f%28n%29%3D%5Cleft%5C%7B%5Cbegin%7Bmatrix%7D%201%20%26%20n%20%3D%201%2C2%20%26%20%5C%5C%20f%28n-1%29%20&plus;%20f%28n-2%29%26n%3E2%20%26%20%5Cend%7Bmatrix%7D%5Cright.

根据这个公式就能进行递归。当n>2的时候进行递归,当n = 1或npython = 2时返回1。

二、源代码以及运行截图

为了方便大家的交流和学习,我将程序源代码和运行截图放置在下方。

非递归:

源代码:

#include<stdio.h>
//递归和非递归分别实现求第n个斐波那契数
//非递归
int main()
{
int i = 1;
int j = 1;
int temp = 0;
int n = 0;
int fib = 0;
scanf("%d", &n);
while (n > 0)
{
if (n > 2)
{
temp = j;
j = i + j;
i = temp;
}
else 
fib = j;
n--;
}
printf("%d", fib);
return 0;
}

运行截图:

f1dbc3e8d9f744e48d6e0b4214054344.png

递归:

源代码:

//递归
int Fib(int n)
{
if (n > 2)
{
return Fib(n - 1) + Fib(n - 2);
}
else 
{
return 1;
}
}
int main()
{
int n = 0;
scanf("%d", &n);
while (1)
{
if (n <= 0)
{
printf("输入错误请重新输入:>");
}
else
{
printf("%d\n", Fib(n));
break;
}
}
return 0;
}

运行截图:

f717f956eea348309b381ae30c07805b.png

总结

以上就是今天要讲的内容,本文简单的介绍了用C语言如何求解第n个斐波那契数的两种思路,还进一步展示了代码的运行结果验证了作者的思路。

到此这篇关于C语言新手练习题之求第n个斐波那契数的文章就介绍到这了,更多相关C语言求第n个斐波那契数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!