第1关 编写递归函数方法求x的n次方 (要求n>=0)
#include
double power(double x,int n)
{
/********** Begin **********/
if(n>=0)
if(n==0)
return 1;
else
return x*power(x,n-1);
else {
printf("n<0,data error!");
return 0;
}
/********** End **********/
}
int main( )
{
int n;
double x, y;
scanf("%lf,%d",&x,&n);
y = power(x,n);
if(y!=0)
{
printf("%lf\n",y);
}
return 0;
}
第2关 编写递归函数求小于等于n的所有正整数之和
#include
using namespace std;
int add(int n);
int main()
{
int n;
int b;
cin>>n;
b = add(n);
cout<
第3关 编写递归函数求数组元素的和
#include
#define N 20
int Fun(int a[],int start,int end);
int main()
{
int a[N], sum;
int i,n,s,e;
//printf("输入整数个数:");
scanf("%d",&n);
//printf("输入%d个整数:\n",n);
for(i=0;i
第4关 编写递归函数求数组元素的最大值
#include
#define N 20
int max(int a,int b);
int Func(int a[],int s,int e);
int main()
{
int a[N], m;
int i,n,s,e;
//printf("输入整数个数:");
scanf("%d",&n);
//printf("输入%d个整数:\n",n);
for(i=0;i b) return a;
else return b;
/********** End **********/
}
/**********定义Func()函数**********/
int Func(int a[],int s,int e)
{
/********** Begin **********/
static int i= a[e];
i = max(i,a[s]);
if(s == e) {
return i;
}
else return Func(a,s+1,e);
/********** End **********/
}
第5关 编写递归函数将所输入的整数以相反顺序打印出来,整数为0时终止输入
#include
void reverse(); //reverse函数的声明
int main()
{
reverse();
printf("\n");
return 0;
}
/**********定义reverse ()函数**********/
void reverse()
{
/********** Begin **********/
int a[100],n=0,temp;
scanf("%d",&a[n]);
while (a[n] != 0){
n++;
scanf("%d",&a[n]);
}
for(int i=0,j=n-1;i
第6关 编写递归函数将所输入的5个字符,以相反顺序打印出来
#include
void func(int n);
int main()
{
//printf("please input 5 numbers:");
func(5);
return 0;
}
/**********定义func ()函数**********/
void func(int n)
{
/********** Begin **********/
char a[n],temp;
for(int i=0;i
第7关 编写程序输入整数N,打印Fibonacci数列的前N项,要求用递归函数实现
#include
int F(int n) ;
int main()
{
int n,y,i;
scanf("%d",&n);
for(i=0;i<=n;i++)
{
y= F(i) ;
printf("%d ",y);
}
printf("\n");
return 0;
}
/**********定义F()函数**********/
int F(int n)
{
/********** Begin **********/
if(n<2){
return 1;
}else{
return F(n-1)+F(n-2);
}
/********** End **********/
}