C语言问题 递归函数求倒序输出 急求 在线等!!总是报错

#include "stdio.h"
#include "conio.h"
#include "math.h"
int hanshu(int n)
{
int x,y,s;
x=n%10;
for(s=0,y=1;;y++)
{
if((n.0/(int)pow(10,y))<1)
{
s=x*(int)pow(10,y-1);
return (s+hanshu(int(n/10)));
break;
}
}
}
void main()
{
int n;
printf("Please input a number:");
scanf("%d",&n);
printf("The result is:%d",hanshu(n));
getch();
}
要求用递归函数倒序输出数字,如12345输出54321
哪里错了?

你的错误不仅是没有终止条件,既然用递归,你的for循环又用于何处?递归就是取代了for的作用,你单独用for循环可以实现,单独用递归也是可以实现,你这二者结合的,便出现逻辑上的错误。

另外你的return (s+hanshu(int(n/10)));在新的一轮递归中,s=0;总而言之,你的递归程序很乱,读不懂。

下面是我结合你的思路实现的递归算法:

#include "stdio.h"
#include "conio.h"
#include "math.h"
int hanshu(int n,int*sa)
{
    int x,y;
    x=n%10;
    (*sa)=(*sa)*10+x;
    if((n/10)>0)
    {
        hanshu((n/10),sa);
    }
    else{
        return 0;
    }

}
int main()
{
    int n,s=0;
    printf("Please input a number:\n");
    scanf("%d",&n);
    hanshu(n,&s);
    printf("The result is:\n%d\n",s);
    return 0;
}

结果:

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-07
没有递归终止条件,
int x,y,s;
if(n<10){
return n;
}
x=n%10;
....本回答被网友采纳
相似回答