
正文
递归函数数字调换c语言 递归函数可以转换成非递归函数
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
转换递归函数 c语言
先从main函数开始运行,输入一个n的值,接下来调用zhuanhuan函数,并把n作为参数传给zhuanhuan函数,n也就等于m,接着整个程序便转到了zhuanhuan函数那里,这个函数中定义了一个长整型变量x,由这个变量的值来决定是否继续下面的调用,把m除10的值赋值给x,当x不等于0时就继续下面的语句实现调用,只要x值不为0,就一直循环这个过程
相关问答
Q1: c语言:用递归函数将数字转换成字符串输出
#include stdio.h
void foo(int *a, int n)
{
if (n)
{
putchar(*a + '0');
return foo(a + 1, n - 1);
}
}
int main(void)
{
int b[5] = {1, 2, 3, 4, 5};
foo(b, 5);
return 0;
}
Q2: c语言 数制转换(递归)
#include "stdafx.h"
#include stdlib.h
#include stdio.h
#include string.h
int converN(int p,int m, int n);
int conver10(char *pold, int m);
int power(int m, int pow);
int main( )
{
int old,fresh,oldv=0;
char cold[100];
printf("输入的数制不能超过16,按q退出,按回车继续。");
while(getchar() != 'q')
{
printf("请输入原数制:");
scanf("%d",old);
printf("请输入新数制:");
scanf("%d",fresh);
printf("请输入要转换数字:");
scanf("%s",cold);
printf("转换后数字为:");
converN(conver10(cold, old),old,fresh);
putchar('\n');
printf("输入的数制不能超过16,按q退出,按回车继续。");
while(getchar() != '\n')
continue;
}
return 1;
}
int power(int m, int pow)
{
if(pow == 0)
return 1;
if(pow 0)
return m*power(m,pow-1);
}
int conver10(char *pold, int m)
{
int len = strlen(pold);
int res=0;
for(int i=0; ilen; i++)
{
switch(tolower(pold[i]))
{
case 'a':
res += (pold[i]-'a'+10) * power(m,len-i-1);
break;
case 'b':
res += (pold[i]-'a'+10) * power(m,len-i-1);
break;
case 'c':
res += (pold[i]-'a'+10) * power(m,len-i-1);
break;
case 'd':
res += (pold[i]-'a'+10) * power(m,len-i-1);
break;
case 'e':
res += (pold[i]-'a'+10) * power(m,len-i-1);
break;
case 'f':
res += (pold[i]-'a'+10) * power(m,len-i-1);
break;
default:
res += (pold[i]-'0') * power(m,len-i-1);
}
}
return res;
}
int converN(int p,int m, int n)
{
int i=0;
if(p/n != 0)
converN(p/n,m,n);
if((i=p%n) 10)
putchar('0' + i);
else
putchar('a' + i - 10);
return 1;
}
关于递归函数数字调换c语言和递归函数可以转换成非递归函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。





