题目:从键盘输入一个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 。在写递归函数时,我们需要注意递归前的操作和递归后的操作,这区别非常大。