📜  c recursion func revers number (1)

📅  最后修改于: 2023-12-03 15:13:46.183000             🧑  作者: Mango

C语言递归函数实现数字反转

在C语言中使用递归函数实现数字反转可以帮助我们更好的理解递归函数的用法,同时也可以解决数字反转的问题。

数字反转问题

数字反转指的是将一个正整数的所有数字倒序排列,例如数字12345反转后为54321。

解决方案

我们可以使用递归函数实现数字反转的过程。具体实现步骤如下:

  1. 定义一个递归函数,函数名为reverseNum,参数为一个整数类型的变量num
  2. 在函数内部,判断num是否小于10,如果小于10说明该数已经被颠倒过了,直接返回。
  3. 如果num不小于10,则继续递归调用函数reverseNum,传入num/10,此时num除以10的余数就变成了高位数字,余数就变成了低位数字。
  4. 将递归调用的结果(即低位数字)和当前数字相乘,再加上高位数字,就可以颠倒当前数字中的低位数字和高位数字,返回结果即可。

下面是代码实现:

#include <stdio.h>

int reverseNum(int num)
{
    if (num < 10) // num已经被倒置完成
        return num;
    
    int lowNum = num % 10; // 低位数字
    int highNum = num / 10; // 高位数字
    int reverseLowNum = reverseNum(highNum); // 递归调用,求低位数字的反转
    return lowNum * powerOf10(highNum) + reverseLowNum; // 算出结果
}

int powerOf10(int n)
{
    if (n <= 0)
        return 1;
    return 10 * powerOf10(n-1);
}

int main()
{
    int num = 12345;
    int reverseNum = reverseNum(num);
    printf("原数为:%d, 反转后的结果为:%d\n", num, reverseNum);
    
    return 0;
}

代码中用到了一个辅助函数powerOf10,用于计算10的n次方。它的实现也采用递归的方式。

总结

使用递归函数实现数字反转可以让我们更好的理解递归函数的用法,同时也解决了数字反转的问题。需要注意的是,在实际使用中需要考虑到数字反转后的长度是否会超过int类型范围。