#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"结果: