前言

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

一、思路

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

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

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

1.非递归

用到了循环相关的知识,

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

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

2.递归

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

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

根据这个公式就能进行递归。当n>2的时候进行递归,当n = 1或n = 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;
}

运行截图:

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

递归:

源代码:

//递归
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;
}

运行截图:

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

总结

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

原文地址:https://blog.csdn.net/xjjxjy_2021/article/details/127637372

相关文章:

  • 2022-02-22
  • 2021-05-30
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-05
猜你喜欢
  • 2021-12-02
  • 2021-04-09
  • 2023-03-07
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案