遞迴:直接或者間接呼叫自身函式
1. 返回值 函式名(形參)
注: 1,when從什麼時候 2,when到什麼時候結束 3,what 每次遞迴時你需要幹嘛
習題:斐波那契數列(fibonacci sequence),又稱**分割數列、因數學家列昂納多·斐波那契(leonardoda fibonacci)以兔子繁殖為例子而引入,故又稱為「兔子數列」,指的是這樣乙個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞迴的方法定義:f(1)=1,f(2)=1, f(n)=f(n-1)+f(n-2)(n>=2,n∈n*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用,為此,美國數學會從2023年起出版了以《斐波納契數列季刊》為名的乙份數學雜誌,用於專門刊載這方面的研究成果。求斐波那契數列:
以兔子繁衍來說 , 首先有一對成熟的兔子生下乙隻兔子, 過兩個月才會生下乙隻幼兔 , 乙隻幼兔需要過乙個月長大 , 兩個月成熟 , 成熟後生下乙隻兔子 , 幼兔也是如此 .
成熟 : 1 1 1 2 3 5 8 13
幼子 : 0 0 1 1 2 3 5 8
兔總 : 1 1 2 3 5 8 13 21
月份 : 1 2 3 4 5 6 7 8
f(1) = 1;
f(2) = 1;
f(3) = 2; ==> f(1) + f(2)
f(4) = 3; ==> f(2) + f(3)
f(5) = 5; ==> f(3) + f(4)
f(6) = 8; ==> f(4) + f(5)
f(7) = 13; ==> f(5) + f(6)
f(8) = 21; ==> f(6) + f(7)
公式 : f( i ) = f( i-1 ) + f( i-2 );
使用遞迴所得 :
#includeint fun(int n)
int main ()
習題:
猴子第一天摘下n個桃子,當時就吃了一半,還不過癮,就又多吃了乙個。第二天又將剩下的桃子吃掉一半,又多吃了乙個。以後每天都吃前一天剩下的一半零乙個。到第10天在想吃的時候就剩乙個桃子了,問第一天共摘下來多少個桃子?
day = 10; f(1桃子) = 1 ;
day = 9; f(2桃子) = (1 + 1) * 2 ;
day = 8; f(3桃子) = * 2 ==> [ f(2桃子) + 1 ] * 2 ;
公式 : f ( i ) = ( f ( i桃子 ) + 1 ) * 2 ;
#includeint fun(int i)
void main()
習題 :
為使用者提供功能模組: 對整型陣列排序(冒泡)
bubble.c:
void bubble(int buf[100],int ilen);
//static void swap( int *, int * );
提供宣告標頭檔案:bubble.h
首先在linux的vi編輯器下,建立乙個main.c 的檔案.
//來自系統檔案
#include "select.h"
extern int num;
//包含標頭檔案:就是引入標頭檔案
void main()
當前目錄下建立乙個bubble.c的檔案.
void bubble(char buf[100],int ilen)
{ int i=0,j=0;
char temp;
for(i=0;i建立乙個bubble.h的檔案.
extern void bubble(char buf[100],int ilen);
C 功能模組實現
本文打算做成乙個系列,旨在用c 簡潔地實現一些實用的且常用的功能模組。功能描述 以我的應用為例 上 版本1,利用string流實現 std vectorsplit const std string line return data 版本2,利用c語言string.h庫中的strtok s inclu...
c語言實現基礎的查詢替換功能模組
常用字處理軟體或者編輯器都提供字串的查詢和替換功能,本文描述如何借助c語言的字串處理函式來實現字串的查詢和替換功能。先說查詢,字串的查詢主要使用strstr函式,其原型為 char strstr char str1,char str2 函式的功能是在str1中查詢str2,如果str2是str1的子...
c語言函式 遞迴
函式的遞迴可以簡單的理解為迴圈,但他和迴圈是不一樣的。函式的一次遞迴呼叫相當於一次迴圈。一般情況下,迴圈要比遞迴計算的時間要快一些 函式的遞迴是在函式內呼叫自己,滿足限制條件後,就會返回到上乙個函式,知道返回到最初的函式 遞迴的呼叫條件 1 限制條件 滿足這個條件,遞迴將不再進行。2 每次的遞迴呼叫...