递归函数之将十进制数转化为其他进制

时间:2021-09-21 19:37:35
#include<stdio.h>
//n 的阶乘
int func(int n)
{
if( n == 1)
return 1;
int res = n * func(n - 1);
return res;
}
int main()
{
int a = 0;
a = func(4);
printf("%d\n",a);
return 0;
}


//将十进制数转化为二进制数
int main()
{
int n = 12;
int s[10] = {0};
int i = 0;
while(n)
{
s[i++] = n % 2;
n /= 2;
}
for(i = i - 1;i >= 0;i--)
{
printf("%d",s[i]);
}
printf("\n");
return 0;
}
//用递归函数将十进制数转化为二进制数
void tran(int n)
{
if(n == 0)
return;
tran (n / 2);
printf("%d",n % 2);
return;
}
int main()
{
int a = 12;
tran(12);
printf("\n");
return 0;
}
//将十进制数转化为十六进制数
char num(int n)
{
switch(n)
{
case '0':
return '0';
break;
case '1':
return '1';
break;
case '2':
return '2';
break;
case '3':
return '3';
break;
case '4':
return '4';
break;
case '5':
return '5';
break;
case '6':
return '6';
break;
case '7':
return '7';
break;
case '8':
return '8';
break;
case '9':
return '9';
break;
case '10':
return 'A';
break;
case '11':
return 'B';
break;
case '12':
return 'C';
break;
case '13':
return 'D';
break;
case '14':
return 'E';
break;
case '15':
return 'F';
break;
}
void tran1(int n)//第一种方法
{
if(n == 0)
return 0;
tran1(n/16);
printf("%c",num(n%16));
}
}
void tran2(int n)//第二种发方法{if(n == 0)return;tran(n / 16);if(n % 16 > 9)printf("%c",n%16 - 10 + 'A');elseprintf("%d",n%16);return;}int main(){int a = 12;tran1(12);printf("\n");return 0}