期末考试经常出现递归的题目,下列题目可以很好的帮助我们锻炼递归思维。
设计递归函数求int数组的最大值
基本思路:各个数都遍历一遍,留下最大的数给t
#include <iostream>
using namespace std;
int max(int s[],int m)
{
int t=0;
if (m==1)
return s[0];
t=max(s,m-1);
printf("t=%d\n",t);
if (t>=s[m-1])
return t;
else
return s[m-1];
}
int main()
{
int n;
int a[10];
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
int f;
f=max(a,n);
cout<<f<<endl;
return 0;
}
设计递归函数求字符串的长度
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int z(char *p)
{
if(*p=='\0') return 0;
return 1+z(p+1);
}
int main()
{
char str[105];
scanf("%s",str);
printf("strlen=%d\n",strlen(str));
printf("z=%d\n",z(str));
return 0;
}