題目:從鍵盤輸入一個10進制數,再輸入一個想要轉換的進制,輸出轉換後的值。
要求:使用遞歸函數實現。
源代碼如下:
#include <stdio.h>
int tran (int n,int BASE)
{
if (n == 0) //臨界條件
return;
tran (n / BASE,BASE); //遞歸調用
if (n % BASE < 10)
{
printf ("%c",n % BASE + '0'); //10以上的表示爲字母
}
else
{
printf ("%c",n % BASE + 'a' - 10);
}
}
int main()
{
int n;
int BASE;
printf ("input a number:\n");
scanf ("%d",&n);
printf ("input BASE:\n");
scanf ("%d",&BASE);
tran (n,BASE);
printf ("\n");
return 0;
}
通過本題,我主要想說明一下我對遞歸的一些理解。一個函數在它的函數體內調用它自身稱爲遞歸調用,這個函數稱爲遞歸函數。遞歸就是重複做一件事,所以要找到重複處。由於內存空間是有限的,函數也要有出口,所以不能無限遞歸。這就要求有一個邊界條件,本題中的邊界條件是n == 0 。在寫遞歸函數時,我們需要注意遞歸前的操作和遞歸後的操作,這區別非常大。