簡單LinuxC程序關於進制轉換(遞歸函數)

題目:從鍵盤輸入一個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 。在寫遞歸函數時,我們需要注意遞歸前的操作和遞歸後的操作,這區別非常大。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章