递归算法解决问题(C语言)


前言

解决以下两个问题:

1、通过递归函数实现汉诺塔的应用。
2、通过递归实现斐波纳契数列的应用。


一、第一题:实验步骤及结果

1.构想思路,分析是什么借助什么移动到哪里。
2.编写程序
在这里插入图片描述

程序结果:
在这里插入图片描述

二、第二题:实验步骤及结果

1.建立函数模型,寻找递归的出口,和该数列递归特点。
2.编写程序

#include<stdio.h>
 
 
int fun(int x){
    
    
 if(x == 0) return 0;
 if(x <= 2) return 1;
 else
 return fun(x-1) + fun(x-2);
}
 
void main(){
    
    
 
 int num,x,i,y,z=0;
 
 printf("请输入该数列在斐波那切上的位置(从左往右) : ");
 
 scanf("%d",&num);
 
  y = fun(num-1);
 for(i=0;i<num;i++)
 {
    
     x=fun(i);
   z=z+fun(i);

 printf("%5d",x);}
 
 printf("\n该项在数列上是%d\n",y);
 printf("该数列和是%d\n",6);

 
}

程序结果:
在这里插入图片描述

在这里插入图片描述

emmm递归其实就是嵌套的嵌套,是让计算机帮你理清,你只要告诉它怎么做,具体的实现计算机是会去实现的。

猜你喜欢

转载自blog.csdn.net/weixin_51759592/article/details/125782876
今日推荐