wp231957 发表于 2022-5-5 15:32:29

关于递归的一个小问题

#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
*/

风车呼呼呼 发表于 2022-5-5 16:15:46

我的运行结果是这个
1 108
2 108
3 107
4 106
5 105
6 104
7 103
8 102
9 101

人造人 发表于 2022-5-5 16:18:46

$ 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:24

wp231957 发表于 2022-5-5 16:35:38

人造人 发表于 2022-5-5 16:20


嗯,光考虑a模10 是一个int没考虑a 本身不是int
页: [1]
查看完整版本: 关于递归的一个小问题