第1关:编写递归函数方法求x的n次方 (要求n>=0)
#include <stdio.h>
double power(double x,int n)
{
/********** Begin **********/
if(n==0)
return 1;
else if(n<0)
{
printf("n<0,data error!");
}
else if(n==1)
{
return x;
}
else
{
return x*power(x,n-1);
}
/********** 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 <iostream>
using namespace std;
int add(int n);
int main()
{
int n;
int b;
cin>>n;
b = add(n);
cout<<b<<endl;
return 0;
}
int add(int n)
{
/********** Begin **********/
if(n>1)
return n+add(n-1);
else if(n==1)
return 1;
/********** End **********/
}
第3关:编写递归函数求数组元素的和
#include <stdio.h>
#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<n;i++)
{
scanf("%d",&a[i]);
}
//printf("输入起始位数:");
scanf("%d",&s);
//printf("输入终止位数:");
scanf("%d",&e);
sum = Fun(a,s,e) ;
printf("%d\n",sum);
return 0;
}
/**********定义Fun()函数**********/
/********** Begin **********/
int Fun(int a[],int start,int end)
{
if(start==end)
{
return a[end];
}
else
{
return a[end]+Fun(a,start,end-1);
}
}
/********** End **********/
第4关:编写递归函数求数组元素的最大值
#include <stdio.h>
#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<n;i++)
{
scanf("%d",&a[i]);
}
m = Func(a,0,n-1) ;
printf("%d\n",m);
return 0;
}
/**********定义Max()函数**********/
int max(int a,int b)
{
/********** Begin **********/
if(a>b)
return a;
else{
return b;
}
/********** End **********/
}
/**********定义Func()函数**********/
int Func(int a[],int s,int e)
{
/********** Begin **********/
if(s==e)
return a[e];
else
return max(a[s],Func(a,s+1,e));
/********** End **********/
}
第5关:编写递归函数将所输入的整数以相反顺序打印出来
#include <stdio.h>
void reverse(); //reverse函数的声明
int main()
{
reverse();
printf("\n");
return 0;
}
/**********定义reverse ()函数**********/
void reverse()
{
/********** Begin **********/
int n;
scanf("%d",&n);
if(n==0)
return;
reverse();
printf("%d ",n);
/********** End **********/
}
第6关:编写递归函数将所输入的5个字符,以相反顺序打印出来
#include <stdio.h>
void func(int n);
int main()
{
//printf("please input 5 numbers:");
func(5);
return 0;
}
/**********定义func ()函数**********/
void func(int n)
{
/********** Begin **********/
char c;
if(n==0)
return;
c=getchar();
func(n-1);
putchar(c);
/********** End **********/
}
第7关:编写程序输入整数N,打印Fibonacci数列的前N项
#include <stdio.h>
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==0||n==1)
return 1;
else
return F(n-1)+F(n-2);
/********** End **********/
}