当前位置:   article > 正文

C语言–函数的递归调用-三种经典例题_使用递归函数调用的方式计算n!。即 n=5,5!=5*4*3*2*1

使用递归函数调用的方式计算n!。即 n=5,5!=5*4*3*2*1

求阶乘:

例如:5!=5*4!=5*4*3!=5*4*3*2!=5*4*3*2*1;

  1. //求一个正整数的阶乘
  2. #include<stdio.h>
  3. int fun(int x){
  4. if(x == 1){
  5. return 1;
  6. }else{
  7. return x*fun(x-1);
  8. }
  9. }
  10. int main(){
  11. int x;
  12. printf("请输入一个数:");
  13. scanf_s("%d",&x);
  14. printf("%d的阶乘是%d",x,fun(x));
  15. return 0;
  16. }

斐波那契数列中第x个数的值:

斐波那契数列:1,1,2,3,5,8,13,21,34,55........

第一个和第二个数都为1,从第三个数开始其值为前两数之和;

  1. #include<stdio.h>
  2. int feibonaqie(int x){
  3. if(x == 1 || x == 2){
  4. return 1;
  5. }else{
  6. return feibonaqie(x-1)+feibonaqie(x-2);
  7. }
  8. }
  9. int main(){
  10. printf("请输入第x个数的值:");
  11. int x;
  12. scanf_s("%d",&x);
  13. printf("斐波那契数列中第%d个数的值是%d",x,feibonaqie(x));
  14. return 0;
  15. }

汉诺塔游戏:

三根杆子(A,B,C),在A杆由下而上、由大到小顺序放置x个圆盘。游戏的目标:把A杆上的圆盘全部移到C杆上,并保持原来的顺序叠好,要求一次只能挪动一个盘子,并且不能出现大盘在上,小盘在下的情况;(借助B杆实现A杆全部移到C杆且顺序不变)。

如果想不明白,可以想想把大象放冰箱分几步

  1. #include<stdio.h>
  2. void move(char x,char y){
  3. printf("%c---->%c\n",x,y);
  4. }
  5. void hanoi(int m,char one,char two,char three){
  6. if(m == 1){
  7. move(one,three);
  8. }else{
  9. hanoi(m-1,one,three,two);
  10. move(one,three);
  11. hanoi(m-1,two,one,three);
  12. }
  13. }
  14. int main(){
  15. int x;
  16. scanf_s("%d",&x);
  17. hanoi(x,'A','B','C');
  18. return 0;
  19. }

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/212695
推荐阅读
相关标签
  

闽ICP备14008679号