注册 登录
编程论坛 C语言论坛

可以帮忙解释一下这个程序的调试过程吗 初次发帖 谢谢大家

mslf 发布于 2022-02-24 16:32, 1129 次点击
#include<stdio.h>
int fun(int s1,int s2){
    if(s2<10)
    return(s1*10+s2%10);
    s1=s1*10+s2%10;
    s1=fun(s1,s2/10);
    return s1;
}
int main(){
    printf("%d",fun(0,1234));
}
2 回复
#2
rjsp2022-02-25 11:12
算法没变,只是增加了一条输出语句
程序代码:
#include <stdio.h>

unsigned fun( unsigned a, unsigned b )
{
    printf( "%u, %u\n", a, b );
    if( b == 0 )
        return a;
    return fun( a*10+b%10, b/10 );
}

int main( void )
{
    printf( "%u\n", fun(12345,678) );
}


输出是
12345, 678
123458, 67
1234587, 6
12345876, 0
12345876
看出来了吧
#3
不会游泳的虾2022-02-25 13:32
供参考:
程序代码:
#include<stdio.h>
int fun(int s1, int s2) {
    printf("%d,%d\n", s1, s2);
    if (s2 < 10)
        return(s1 * 10 + s2 % 10);
    s1 = s1 * 10 + s2 % 10;
    s1 = fun(s1, s2 / 10);
    return s1;
}
int main() {
    printf("%d", fun(0, 12345));
    return 0;
}
//fun()函数为递归函数,实现将数 s2 逆序后,保存到 s1.
//s1   s2
//0, 12345
//5, 1234
//54, 123
//543, 12
//5432, 1
//54321


[此贴子已经被作者于2022-2-25 13:42编辑过]

1