首页 > 解决方案 > 我试图通过在 c 语言中使用递归来反转一个数字,但输出没有改变

问题描述

#include <stdio.h>
int rev(int num);
int main()
{
int num=123;
printf("\n%d",rev(num)/10);
    return 0;
}
int rev(int num)
{
    if(num==0)
    {
        return 0;
    }
    else
    {
        return ((num%10)+rev(num/10))*10;
    }
}

标签: cfunctionrecursionreverse

解决方案


long reverse(int n) {
   static int r = 0;
   
   if (n == 0)
      return 0;
   
   r = r * 10;
   r = r + n % 10;
   reverse(n/10);
   return r;
}

在每次迭代中,您将一次数字添加到静态 r 并将结果乘以 10,然后使用没有该数字的数字调用递归函数n/10


推荐阅读