You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

递归实现数字反转重复输出问题:如何仅打印一次结果?

解决递归反转数字时重复打印的问题

你的代码里,printReverse函数中的printf("%d ",rev);语句会在递归的每一层回溯时执行。以输入1234为例,递归调用链是printReverse(1234)→printReverse(123)→printReverse(12)→printReverse(1)→printReverse(0),当递归触达base case(n=0)后开始逐层返回,每一层都会执行一次printf,所以最终会打印4次反转结果。

下面提供几种修改方案,让结果仅打印一次:

方案一:仅在递归终止时打印

把printf语句放到base case的分支中,只有当n为0时才执行打印操作:

void printReverse(int n)
{
    static int rev=0; 
    
    //base case
    if(n) 
    {
        int rem = n % 10;      
        rev = rev*10 + rem; 
        printReverse(n/10); 
    }
    else
    {
        printf("%d ",rev);
    }
}

方案二:让递归函数返回反转结果,在main中打印

这种方式让函数职责更清晰,递归只负责计算反转后的数字,打印逻辑交给main函数处理:

#include <stdio.h>
#include <stdlib.h>

//function declaration
int reverseNumber(int);

int main()
{
    int n;
    printf("\n\t\t\t\t\tThis program prints reverse of a given number");
    printf("\nEnter a number: ");
    scanf("%d",&n);

    //if someone enters 0
    if(n==0)
    {
        printf("%d",n);
        return 0;
    }
    //计算反转后的数字并打印
    int reversed = reverseNumber(n);
    printf("%d", reversed);
    
    return 0;
}

int reverseNumber(int n)
{
    static int rev=0; 
    
    //base case
    if(n) 
    {
        int rem = n % 10;      
        rev = rev*10 + rem; 
        reverseNumber(n/10); 
    }
    return rev;
}

方案三:避免静态变量,用指针传递反转结果

静态变量会在函数多次调用时保留值,可能引发意外问题。可以用指针传递的方式来计算反转结果,同时保证函数无副作用:

#include <stdio.h>
#include <stdlib.h>

//function declaration
void reverseHelper(int n, int *rev);

int main()
{
    int n;
    printf("\n\t\t\t\t\tThis program prints reverse of a given number");
    printf("\nEnter a number: ");
    scanf("%d",&n);

    if(n==0)
    {
        printf("%d",n);
        return 0;
    }
    int rev = 0;
    reverseHelper(n, &rev);
    printf("%d", rev);
    
    return 0;
}

void reverseHelper(int n, int *rev)
{
    if(n) 
    {
        int rem = n % 10;      
        *rev = (*rev)*10 + rem; 
        reverseHelper(n/10, rev); 
    }
}

内容的提问来源于stack exchange,提问作者Aniket Tripathi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:01:07