回 帖 发 新 帖 刷新版面

主题:递归问题

要求:通过递归实现逆序输出。
如输入123这输出321

回复列表 (共9个回复)

沙发

#include<stdio.h>
main()
{
    void fun(int n);
    int n;
    scanf("%d",&n);
    fun(n);
}
void fun(int n)
{
    if(n<10)
        printf("%d",n);
    else if(n>=10)
    {
        printf("%d",n%10);
    fun(n/10);
    }
    
}
自己写的,没有上机调试,不知道对不对

板凳

不好意思,把if(n>=10)改为if(n>10),然后加一个if(n==10)printf("1");上机试过了,可以运行了

3 楼

函数传入指针
  如果指针为空,返回
  递归调用本函数,传入指针+1
  输出指针所在位置指向的数据
以上为伪代码,细节请自行领会。

4 楼


[code=c]
int reverse()
{
    int i;
    scanf("%d",&i);
    if(i!=0)
        reverse();
    else
        return 1;
    printf("%d",i);

}

int main()
{
    
    reverse();
    return 0;

    
}
[/code]
不知道合你意不

5 楼

[code=c]
void reverse()
{
    int i;
    scanf("%d",&i);
    if(i!=0)
        reverse();
    else return;//输入0就结束
    printf("%d",i);

}

int main()
{

    reverse();
    return 0;


}[/code]

6 楼


能解释清楚点吗

7 楼

晕 连我都清楚了,。。

8 楼

1L的稍微修改一下OK了,也很好理解。但是3L-5L的就很费解了。5L的也运行不起来。。。。如果有空的话麻烦再提示一下。谢了。

9 楼

1楼的其实形式上不是标准的递归

我来回复

您尚未登录,请登录后再回复。点此登录或注册