1.思维导图
2.牛客网理论
3.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int fun(int n);
int main(int argc, const char *argv[])
{
int n;
scanf("%d",&n);
printf("%d\n",fun(n));
return 0;
}
int fun(int n)
{
if(n==0)
return 0;
else
return n%10+fun(n/10);
}
4.输入一个字符串,使用递归实现字符串的逆置
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void fun(int i,int j,char n[]);
int main(int argc, const char *argv[])
{
char n[128]={};
gets(n);
int len=strlen(n);
fun(0,len-1,n);
puts(n);
return 0;
}
void fun(int i,int j,char n[])
{
char t;
if(i>=j)
return 0;
else
{
t=n[i];
n[i]=n[j];
n[j]=t;
return fun(i+1,j-1,n);
}
}
5.使用递归实现斐波那契
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int fun(int n);
int main(int argc, const char *argv[])
{
int i;
for(i=1;i<=10;++i)
printf("%d ",fun(i));
printf("\n");
return 0;
}
int fun(int n)
{
if(n==1||n==2)
return 1;
else
return fun(n-1)+fun(n-2);
}
6.在主函数中定义两个字符串,实现字符串的比较,返回差值
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int fun(char n[],char a[]);
int main(int argc, const char *argv[])
{
char n[128]={};
char a[128]={};
gets(n);
gets(a);
int arr=fun(n,a);
printf("差值为%d\n",arr);
return 0;
}
int fun(char n[],char a[])
{
int i=0;
while(n[i]==a[i])
{
if(n[i]=='\0')
break;
i++;
}
return n[i]-a[i];
}
i=0 c:4 b:4 sum(0)=8
i=1 c:4 b:6 sum(1)=11
i=2 c:4 b:6 sum(2)=12