【正文】
hanoi ( m , ’A’ , ’B’ , ’C’ )。 scanf (%d , amp。 hanoi ( n1 , two , one , three ) 。 else { hanoi ( n1 , one , three , two ) 。 } 遞歸調(diào)用 終止條件 P174例 根據(jù)習題課思路 void move ( char x , char y ) { printf (%c==%c\n, x , y ) 。j++) q+=p(a,j)。 for ( j=1。a,amp。} void main( ) { int a , n , q=0 , j 。else m=p(a,n1)*10+a。 { int m。 } void main( ) { printf (“ 4!=%d\n“ ,f (4) )。 else m= f (n1)*n。 } 直接調(diào)用自己 間接調(diào)用自己 例 10. 計算 4! 4!————————————— 24 ↓ 3!*4———————————— 6*4=24 ↓ 2!*3———————————— 2*3=6 ↓ 1!*2———————————— 1*2=2 ↓ 1 n! ? (n1)!*n 遞歸公式 int f ( int n ) { int m 。} 2) int f1 ( int x ) {j= g ( 3 ) 。為了防止遞歸調(diào)用無終止地進行,必須加條件判斷,滿足某種條件后就不再作遞歸調(diào)用,然后逐層返回。} f是一個遞歸函數(shù)。 z=f(y)。 在遞歸調(diào)用中,主調(diào)函數(shù)又是被調(diào)函數(shù)。 printf(”\n”)。 printf(%8d , r( j , k ) )。k=j 。i=m 。j8。 fac = 1。 } int f ( int m ) void main ( ) {int i , fac 。 c = f (n)/(f ( r)*f( nr)。 …… } P2() { …… } P2() { …… } P2() { …… } P1() { …… P2 …… } 1 C 1 1 C C 1 2 1 C C C 1 3 3 1 C C C C 1 4 6 4 1 …… 1 5 10 10 5 1 0 0 0 1 1