问题:递归的终止条件和返回值判断
/*
求得两个整型数中较大的那一个
*/
#include<stdio.h>
int bigger_than(int a,int b)
{
if(a>b)
{
return a;
}
else
{
return b;
}
}
int main(void)
{
int i,j;
printf("请输入不同的两个整数:");
scanf("%d %d",&i,&j);
printf("%d更大\n",bigger_than(i,j));
return 0;
}
/*
返回给定正整数的倒序数。如给定的是1234,返回4321
*/
#include<stdio.h>
int reverse_order(int a);
int main(void)
{
int n;
printf("请输入一个正整数:");
scanf("%d",&n);
printf("倒序是:%d\n",reverse_order(n));
return 0;
}
int reverse_order(int a)
{
int i,b,c=0;
for(i=0;;i++)
{
b=a%10;
a=a/10;
c=(c+b)*10;
if(a/10==0)
break;
}
c+=a;
return c;
}
/*
用递归求得一个整型数的阶乘
*/
#include<stdio.h>
int Factorial(int a);
int main(void)
{
int n;
printf("请输入一个正整数:");
scanf("%d",&n);
printf("%d的阶乘是:%d\n",n,Factorial(n));
return 0;
}
int Factorial(int a)
{
int c;
if(a==1)
return 1;
c=a*Factorial(a-1);
return c;
}
/*
判断一个整数是否在某两个整数之间
*/
#include<stdio.h>
int number(int a,int b,int c);
int main(void)
{
int x,y,z,n;
printf("请输入3个整数:");
scanf("%d %d %d",&x,&y,&z);
n=number(x,y,z);
if(n)
printf("%d在%d与%d之间\n",x,y,z);
else
printf("%d不在%d与%d之间\n",x, y,z);
return 0;
}
int number(int a,int b,int c)
{
if((a>b&&a<c)||(a<b&&a>c))
return 1;
else
return 0;
}