日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言新手練習題之求第n個斐波那契數_C 語言

作者:輕輕敲醒沉睡的心靈d(?д??) ? 更新時間: 2022-12-09 編程語言

前言

在C語言中,分別用遞歸和非遞歸兩種方法實現求第n個斐波那契數

一、思路

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

第一個和第二個數都是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或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;
}

運行截圖:

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個斐波那契數的兩種思路,還進一步展示了代碼的運行結果驗證了作者的思路。

原文鏈接:https://blog.csdn.net/xjjxjy_2021/article/details/127637372

欄目分類
最近更新