斐波那契数列两种算法实现(循环,递归)
首先是最簡單的遞歸算法,相信很多初學(xué)者第一次接觸遞歸這種算法都是從寫一個(gè)斐波那契數(shù)列開始的。
這里除了遞歸算法之外我還會介紹循環(huán)算法
首先是最基礎(chǔ)的遞歸算法
#include <stdio.h>
int f(int n)
{
?? ?if(n==1||n==2)
?? ? return 1;
?? ?else?
?? ? ?return f(n-1)+f(n-2);
?} #遞歸的邏輯
int main()
{
?? ?int n;?
?? ?printf("請輸入你想要斐波那契數(shù)列的個(gè)數(shù)\n");
?? ?scanf("%d",&n);
?? ?printf("斐波那契數(shù)列為:\n");?
?? ?for(int i=1;i<=n;i++)
?? ? ?printf("%d\t",f(i));
?? ?return 0;?
}
然后是循環(huán)算法,我這里定義了一個(gè)只有兩個(gè)元素的整形數(shù)組,當(dāng)然也可以用其他線性結(jié)構(gòu)這里不多贅述了。
在每一次循環(huán)的過程中我都會進(jìn)行數(shù)組的值的更新,來保證每一次數(shù)組的這兩個(gè)值都是斐波那契數(shù)列的最后兩個(gè)值。
#include<stdio.h>
int a[2]={1,1};
int f(int n)
{
?? ?if(n>2)
?? ?{
?? ??? ?for(int i=0;i<n-2;i++)
?? ??? ?{ ? int x;
?? ??? ? ? ?x=a[1];
?? ??? ??? ?a[1]=a[1]+a[0];
?? ??? ??? ?a[0]=x;
?? ??? ??? ?return a[1];
?? ??? ?}?#循環(huán)更新值并返回輸出
?? ?}
?? ?else
?? ? return 1;?
}
int main()
{
?? ?int n;?
?? ?printf("請輸入你想要斐波那契數(shù)列的個(gè)數(shù)\n");
?? ?scanf("%d",&n);
?? ?printf("斐波那契數(shù)列為:\n");
?? ?for(int i=1;i<=n;i++)
?? ? ?printf("%d\t",f(i));
?? ?return 0;?
}
斐波那契數(shù)列比較經(jīng)典可以用幾種不同的算法實(shí)現(xiàn),有興趣的可以嘗試其他的解決方法。
代碼運(yùn)行截圖
?
總結(jié)
以上是生活随笔為你收集整理的斐波那契数列两种算法实现(循环,递归)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018年AI领域成人才紧缺行业
- 下一篇: 走在时代前沿的移动应用安全技术,拿来吧你