C 函式 遞迴

2021-07-11 02:26:23 字數 1494 閱讀 3316

/*

1.函式一定要宣告,這符合**的嚴謹性(但是返回值是int型別的函式不需要宣告也不會報錯,但最好不要這麼做)

2.乙個函式在它的函式體內呼叫它自身稱為遞迴呼叫。為了防止遞迴呼叫無終止地進行,必須在函式內有終止遞迴呼叫的手段

遞迴函式構成條件

- 自己呼叫自己

- 存在乙個條件能夠讓遞迴結束

- 問題的規模能夠縮小

總的來說可以寫成if else的形式,if後面跟終止執行的條件或其他情況,而else後面跟n-1時的情況。

*/#include /** 求a的n次方 */

int an(int a, int n);

int main(int argc, const char * argv)

int an(int a, int n)

else if (n == 0) else

}

/*

年齡遞迴

no.1 age1 = 10;

no.2 age2 = 10 + 2 = 12;

no.3 age3 = 10 + 2 + 2 = 12 + 2 = 14;

... ...

*/#include int age(int n);

int main(int argc, const char * argv)

int age(int n)

else

}

/**

問題描述

三個正方形a、b、c

a的邊長是b的二倍

b的變長是c的二倍

c的邊長為1

求a的面積

*/#include int bianchang(int c);

int main(int argc, const char * argv)

int bianchang(int c)

else

}

/**

hanoi塔問題

假設有三個命名為 a b c 的塔座 ,在塔座a上插有n個直徑大小不相同,由小到大編號為1 ,2 ,3 ,··· ,n的圓盤,要求將a座上的圓盤移至塔座c,並按同樣的順

序疊排,圓盤移動必須遵守下列規則:

1:每次只能移動乙個圓盤 2:圓盤可以插在任意乙個塔座上 3:任何時刻都不能將乙個較大的圓盤放在乙個較小的圓盤上

*/#include void hanoi(int n, char a, char b, char c);

void moves(char p, char q);

int main(int argc, const char * argv)

void hanoi(int n, char a, char b, char c)

else

}void moves(char p, char q)

C 遞迴函式

如果乙個函式在其函式體內直接或間接地呼叫了自己,該函式就被稱為遞迴函式。遞迴函式是解決某些複雜問題的十分有效的方法。遞迴適用於 資料的定義形式按遞迴定義。如fibonacci數列的定義為 f n f n 1 f n 2 當n 1 f 0 1 當n 0 f 1 2 當n 1 整數的階乘定義 n n n...

遞推遞迴 C 遞迴的函式

題目 description 給定乙個函式 f a,b,c 如果 a 0 或 b 0 或 c 0 返回值為 1 如果 a 20 或 b 20 或 c 20 返回值為 f 20,20,20 如果 a b 並且 b c 返回 f a,b,c 1 f a,b 1,c 1 f a,b 1,c 其它情況返回 ...

C 遞迴的函式

description 給定乙個函式 f a,b,c 如果 a 0 或 b 0 或 c 0 返回值為 1 如果 a 20 或 b 20 或 c 20 返回值為 f 20,20,20 如果 a b 並且 b c 返回 f a,b,c 1 f a,b 1,c 1 f a,b 1,c 其它情況返回 f a...