C語言遞迴解決fibonacci數列演算法
斐波那契數列的遞迴條件是
F(n)=1 n=0,
F(n)=1 n=1,
F(n)=F(n-1)+F(n-2) n>1;
可以直接寫出遞迴函式
int f(int n)
{
if(n<=1)
return 1;
else
return f(n-1)+f(n-2);
}
原始碼就是
#include<stdio.h>
int fib(int n){ //求fibonacci數列第n個數
if(n==1 || n==2) return 1;
else return fib(n-1) + fib(n-2);
}
void main(){
int a=0,sum;
printf("請輸入正整數N:");
scanf_s("%d",&a);
for(int i=a;i>0;i--)
{
sum=fib(i);
printf("fibonacci數列第%d個數:%d\n",i,sum);}
}
相關推薦
C語言遞迴解決fibonacci數列演算法
斐波那契數列的遞迴條件是 F(n)=1 n=0, F(n)=1 n=1, F(n)=F(n-1)+F(n-2) n>1; 可以直接寫出遞迴函式 int f(int n) { if(n<=1) retu
C語言遞迴解決階乘問題
遞迴函式的概念是:直接或者間接地呼叫自身的演算法 遞迴函式:用函式自身給出定義的函式 而且在學習的後期 學到了分治法可以感覺到分治法產生的子問題是原問題的較小模式,這就為使用遞迴技術提供了不小的方便 即在合適的情況,使用遞迴反覆分治,大問題變相同性質的小問題,再進行遞迴求解 今天
c語言遞迴演算法--深入淺出(1)
RECURSION EXERCISES 1 (遞迴練習1) 前言:資質駑鈍,剛剛學習遞迴的時候總是感覺有點空洞,懸乎。 可能沒有足夠例題練練手。最近找了幾道有難度層次的遞迴例題,在此分享給大家。 S
C語言-遞迴演算法以及經典遞迴(Hanoi)
用遞迴演算法(recursion)計算階乘 codes: /************************************** *author: Yang Xu *goals: compute factorial by recursion ************
一箇中興的面試題,輸入兩個數n和m,從數列1,2,3……n中隨意取幾個數,使其和等於m,要求將其中所有組合列出來程式設計求解(c語言遞迴函式分解法)
原題目:輸入兩個數n和m,從數列1,2,3……n中隨意取幾個數,使其和等於m,要求將其中所有組合列出來程式設計求解 c語言解法分析: 先判定n和m的大小,如果m小於n,則只需從1,2……m之間找出和為m的組合即可,如果m大於n,則需要判斷1~n的和是否
開始學習C語言遞迴程式,漢諾(hanoi)塔問題嘗試
漢諾問題:3個座A, B,C, 在A座有64個大小不等的盤,現在要把64個盤轉移到另一個座,每次只能移動一個盤,且大盤不能放在小盤上面。 思考過程。 1)移動1個盤到另一個座需要搬1次,記 a(1) = 1 2)移動2個盤:在已經移動1個盤的基礎上(用a1次),將第2個盤放到另一個空座(1次),然後再
小論c語言遞迴與遞推
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Java遞迴發實現Fibonacci數列,尾遞迴實現Fibonacci數列,並獲取計算所需時間
遞迴法計算Fibonacci數列: 它可以遞迴地定義為: 第n個Fibonacci數列可遞迴地計算如下: int fibonacci(int n) { if (n <= 1) return 1; return fibon
遞迴實現Fibonacci數列第N個元素的計算
1.1 演算法設計思想 無窮數列1,1,2,3,5,8,13,21,34,55,…,被稱為Fibonacci數列。數列遞迴關係式說明當n大於1時,數列的第n項的值是它前面的兩項之和。它用兩個較小的自變數的函式值來定義較大自變數的函式值,所以需要兩個初始值F(0)和F(1
C語言遞迴實現n的階乘(n!)
非負整數n的階乘可以表示為n! (讀作:n的階乘),其定義如下: n! = n·(n - 1)• (n - 2)· …·1 (n大於或等於l),且n = 0時,n! = l 例如,5 ! = 5·4·3·2·1 = 120。 請編寫一個程式,讀入一個非負整數,
C語言遞迴趕鴨子
一個人趕著鴨子去每個村莊賣,每經過一個村子賣去所趕鴨子的一半又一隻。這樣他經過了七個村子後還剩兩隻鴨子,問他出發時共趕了多少鴨子?經過每個村子賣出多少隻鴨子? #include<stdio.h> double fun(int n) { double m
C語言——遞迴(求階乘)
很多同學不知道怎麼用遞迴 的方法敲出一個數字的階乘,其實 遞迴就是函式不斷的呼叫自己,具體如下: 程式我簡化了一下 #include<stdio.h> int main() { int m,n; printf("輸入你要計算的階乘的數字:\n"); scanf("%d",&
C語言遞迴算法系列_ 逆序和正序輸出一個整數的每位數 (1)
這是一個簡單的問題,也是遞迴裡面比較典型的例子。那麼從這裡開始我們的遞迴之旅。 參考書籍《資料結構與演算法分析 C語言描述》 《Java程式設計 基礎、程式設計抽象與演算法策略》 先談談遞迴,遞迴的一般解釋為將問題分解為更簡單的具有類似解決方法子問題,更小子問題解決
第十二週—C語言 遞迴求解(爬樓梯)
/* 煙臺大學計算機學院 2016 作者:張威 完成日期:2016年11月18日 問題及描述:爬樓梯地方法種數,一次可以爬一階或兩階。 */ #include <stdio.h> #inc
c語言遞迴實現漢諾塔
程式碼不是自己寫的,copy資料結構書上的,看的懂,但是寫不出來。 //程式碼很簡潔,但卻是經典 #include <stdio.h> int count =0; void move(char x,int n,char y) { co
linux下 c語言遞迴遍歷資料夾下所有檔案和子資料夾(附上替換文字檔案內容的方法)
#include <stdio.h> #include <sys/dir.h> #include <string> #include <sys/stat.h> //判斷是否為資料夾 bool isDir(const cha
九連環 C語言遞迴程式碼
兩年前玩九連環時候寫的,想清一下硬碟刪些東西。 實際上九連環的裝和卸都是遞迴操作: 1.第一個環可以自由裝/卸 2.第i(i>1&&i<10)個環需要第i-1個環的輔助才能完成裝/卸,且需要第1個到第i-2個環均處於已拆卸狀態。 假如現在想卸下第
理解C語言遞迴函式的逐級返回(return)
遞迴函式,也即呼叫自身的函式。 C Primer Plus中有個例子很棒: /*理解C語言遞迴函式*/ #include<stdio.h> void up_and_down(int); int main(void) {up_and_down(1);retur
C語言遞迴的應用之迴文字元
遞迴應用之迴文字元的判別: 有一種特殊形式的字串,其正反序相同,被稱為“迴文字串”。例如LeveL就是一個迴文字串。 輸入: 字串 輸出: Yes或者No 說明: 如輸出Yes,說明輸入的字串是一個
C語言遞迴求子集
C語言程式設計問題,要求使用遞迴,給定自然數1~n的集合,和自然數m,求各元素之和等於m的子集,設n=20,m= C語言給定自然數1~n的集合,和自然數m,求各元素之和等於m的子集,設n=20,m=48. 求:(1)共有多少符合上述條件的子集? (2)符合上述條件,且子集中