递归算法的剖析

/*
递归算法:
1.自身函数中调用自己的函数。执导
2.递归结束的条件应放在递归函数之前。否则就会形成无穷循环调用。
3.每一次递归定义的变量都会保留在本次调用过程中,等到返回时,就可以得到变量的值。每一次调用过程中所定义的变量的值是不同的。
4.每一次调用时都会有类似中断的保护现场,等本次调用结束后返回该调用电继续执行语句。
5.如果出现了多次调用,那么return就是返回到最后一次调用的函数位置,执行下面的语句,二并非直接返回到主函数。
*/

#include
#include
#include

void convto(char* s,int n ,int b) //n为需要转换的数值,b 为进制数
{
char bit[] = {"0123456789ABCDEF"}; //不同进制数数值
int len;
if(n == 0)
{
strcpy(s," ");
printf("这里怎么执行的?\n");
return;
}
printf("开始调用\n");
convto(s,n/b,b);
printf("调用过后!!!!\n");
len = strlen(s);
s[len] = bit[n%b];
s[len+1] = '\0';
}
int main()
{
char s[80]; //定义了一个字符数组
int base,old; //old需要转换为其他进制的数,base为进制数可以为2、8、10、16
printf("输入需要转换进制的数值:\n");
scanf("%d",&old); //输入需要转换的数字
printf("输入需要转换为的进制:\n");
scanf("%d",&base);

convto(s,old,base); //调用转换函数,s为转换后的数值
printf("%s\n",s);
return 0;
}

相关文档
最新文档