C語言新手練習題之求第n個斐波那契數(shù)
前言
在C語言中,分別用遞歸和非遞歸兩種方法實現(xiàn)求第n個斐波那契數(shù)
一、思路
首先分析一下關于斐波那契數(shù)列的原理:
第一個和第二個數(shù)都是1,之后的每個數(shù)都是前兩個數(shù)之和,即:
1,1,2,3,5,8,……
1.非遞歸
用到了循環(huán)相關的知識,
當n>2的時候進入循環(huán),將前兩個數(shù)相加得到第三個數(shù);
當n<=2的時候跳出循環(huán)。
2.遞歸
觀察斐波那契數(shù)列可以得到一個公式:
根據(jù)這個公式就能進行遞歸。當n>2的時候進行遞歸,當n = 1或n = 2時返回1。
二、源代碼以及運行截圖
為了方便大家的交流和學習,我將程序源代碼和運行截圖放置在下方。
非遞歸:
源代碼:
#include<stdio.h> //遞歸和非遞歸分別實現(xiàn)求第n個斐波那契數(shù) //非遞歸 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; }
運行截圖:
遞歸:
源代碼:
//遞歸 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個斐波那契數(shù)的兩種思路,還進一步展示了代碼的運行結果驗證了作者的思路。
到此這篇關于C語言新手練習題之求第n個斐波那契數(shù)的文章就介紹到這了,更多相關C語言求第n個斐波那契數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C語言數(shù)據(jù)結構遞歸之斐波那契數(shù)列
這篇文章主要介紹了C語言數(shù)據(jù)結構遞歸之斐波那契數(shù)列的相關資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內容,需要的朋友可以參考下2017-10-10c++靜態(tài)局部變量和靜態(tài)函數(shù)示例
這篇文章主要介紹了c++靜態(tài)局部變量和靜態(tài)函數(shù)示例,需要的朋友可以參考下2014-04-04C語言數(shù)據(jù)結構實現(xiàn)鏈表去重的實例
這篇文章主要介紹了C語言數(shù)據(jù)結構實現(xiàn)鏈表去重的實例的相關資料,這里提供了題目及實例代碼,需要的朋友可以參考下2017-07-07