本文主要是介绍2.11:递归操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.递归实现n!
程序代码:
1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 int fun(int n);5 int main(int argc, const char *argv[])6 {7 int n;8 printf("please enter n:");9 scanf("%d",&n);10 if(n<1)11 printf("enter error\n");12 else13 {14 int s=fun(n);15 printf("%d!=%d\n",n,s);16 }17 return 0;18 }19 int fun(int n)20 { 21 if(n==0)22 return 1;23 else24 return n*fun(n-1);25 }
运行结果:
2.递归实现0-n的和
程序代码:
1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 int fun(int n);5 int main(int argc, const char *argv[])6 {7 int n;8 printf("please enter n:");9 scanf("%d",&n);10 if(n<0)11 printf("enter error\n");12 else13 {14 int sum=fun(n);15 printf("sum=%d\n",sum);16 }17 return 0;18 }19 int fun(int n)20 {21 if(n==0)22 return 0;23 else24 return n+fun(n-1);25 }
运行结果:
3.递归实现斐波那契数列
程序代码:
1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 int fun(int n);5 int main(int argc, const char *argv[])6 { 7 int n;8 printf("please enter n:");9 scanf("%d",&n);10 int s=fun(n);11 printf("sum=%d\n",s);12 return 0;13 }14 int fun(int n)15 { 16 if(n<=0)17 { 18 printf("enter error\n");19 return -1;20 }21 else if(n==1||n==2)22 return 1;23 else24 return fun(n-1)+fun(n-2);25 }
运行结果:
4.递归实现二进制转换
程序代码:
1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 int rev(int num);5 int main(int argc, const char *argv[])6 { 7 int num;8 printf("please enter num:");9 scanf("%d",&num);10 rev(num);11 puts("");12 return 0;13 }14 int rev(int num)15 {16 if(num==0)17 return 0;18 else19 {20 rev(num/2);21 printf("%d",num%2);22 }23 }
运行结果:
5.递归实现计算各个位数字之和
程序代码:
1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 int fun(int num);5 int main(int argc, const char *argv[])6 { 7 int num;8 printf("please enter num:");9 scanf("%d",&num);10 int s=fun(num);11 printf("sum=%d\n",s);12 return 0;13 }14 int fun(int num)15 { 16 if(num==0) 17 return 0;18 else19 return num%10+fun(num/10);20 }
运行结果:
6.递归实现计算各个位数字的乘积
程序代码:
1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 int fun(int n);5 int main(int argc, const char *argv[])6 { 7 int n;8 printf("please enter n:");9 scanf("%d",&n);10 if(n==0)11 printf("%d",n);12 else13 { 14 int s=fun(n);15 printf("sum=%d\n",s);16 }17 return 0;18 }19 int fun(int n)20 { 21 if(n>=0&&n<=9)22 return n;23 else24 return n%10*fun(n/10);25 }
运行结果:
7.递归实现计算单词逆置
程序代码:
1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 void rev(char *i,char *j);5 int main(int argc, const char *argv[])6 {7 char str[40]="";8 printf("please enter str:");9 gets(str);10 //单词计数11 int num=0,word=0;12 char c;13 for(int i=0;(c=str[i])!='\0';i++)14 {15 if(c==' ')16 word=0;17 else if(word==0)18 {19 word=1;20 num++;21 }22 }23 printf("word num=%d\n",num);24 //单词逆置25 char *end=str;26 rev(str,str+strlen(str)-1);27 while(*end!='\0')28 {29 char *start=end;30 while(*end!=' '&&*end!='\0')31 end++;32 rev(start,end-1);//单词逆置33 if(*end!='\0')34 end++;35 }36 printf("%s",str);37 puts("");38 return 0;39 }40 void rev(char *i,char *j)41 {42 while(i<j)43 {44 char t=*i;*i=*j;*j=t;45 i++;j--;46 }47 }
运行结果:
这篇关于2.11:递归操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!