关于递归的一个小问题
#include <stdio.h>void mypow(long long int a,int idx)
{
if (a<10){
printf("%d %d \n",a%10,idx);
}
else
{
mypow(a/10,++idx);
printf("%d %d \n",a%10,idx);
}
}
int main()
{
long long int s=123456789;
mypow(s,100);
return 0;
}
/*
运行结果如下:
PS D:\wp> ./ct
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
期望这个idx 是一个自增序列,却是获取了一堆000000
*/
我的运行结果是这个
1 108
2 108
3 107
4 106
5 105
6 104
7 103
8 102
9 101 $ cat main.c
#include <stdio.h>
void mypow(long long int a,int idx)
{
if (a<10){
//printf("%d %d \n",a%10,idx);
printf("%lld %d \n",a%10,idx);
}
else
{
mypow(a/10,++idx);
//printf("%d %d \n",a%10,idx);
printf("%lld %d \n",a%10,idx);
}
}
int main()
{
long long int s=123456789;
mypow(s,100);
return 0;
}
$ gcc-debug -o main main.c
$ ./main
1 108
2 108
3 107
4 106
5 105
6 104
7 103
8 102
9 101
$
人造人 发表于 2022-5-5 16:20
嗯,光考虑a模10 是一个int没考虑a 本身不是int
页:
[1]