C语言函数递归

C语言函数递归,第1张

因为代码fun函数调用顺序是fun(30501)、fun(3050)、fun(305)、fun(30)、fun(3);fun(3)调用终止,执行输出语句先是fun(3),即输出3,然后是执行fun(30)的输出语句……刚好与调用顺序相反,如果想输出时1 5 3,把两个if语句顺序调换即可:

#include"stdioh"

void fun(int n)

{

if (n % 10) printf("%c\t", n % 10 + '0');

if (n / 10)

fun(n / 10);

}

main()

{

int n;

scanf("%d", &n);

fun(n);

}

//循环实现

#include<stdioh>

int main()

{

    int n, t = 0;

    scanf("%d", &n);

    if(n<=0)return 0;

    else

    while(n){

        t = t  10 + n % 10;

        n /= 10;

    }

    printf("%d", t);

    return 0;

}

简单修改一下就可以变递归了。代码如下

#include<stdioh>

int fanzhuan(int n,int t){

    t = t  10 + n % 10;

    n /= 10;

    if(n>0)return fanzhuan(n,t);

    return t;

}

int main()

{

    int n, t = 0;

    scanf("%d", &n);

    if(n<=0)return 0;

    else t=fanzhuan(n,t);

    printf("%d", t);

    return 0;

}

//方法一,不需将转换后的字符存储在字符数组中

#include<stdioh>

void change(int );

int main()

{

int n;

scanf("%d",&n);

change(n);

printf("\n");

return 0;

}

void change(int num)

{

if(num==0)return ;

change(num/10);

printf("%d",num%10);

}

//方法二,先将转换后的字符存储在字符数组中

#include<stdioh>

#define LEN 100

int m=0;

void change(int ,char );

int main()

{

int n,i;

char a[LEN];

for(i=0;i<LEN;i++)

a[i]='\0';

scanf("%d",&n);

change(n,a);

printf("%s",a);

printf("\n");

return 0;

}

void change(int num,char s)

{

if(num==0)return ;

change(num/10,s);

s[m++]=(char)(num%10+'0');

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12170792.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存