猴⼦吃桃问题C语⾔⽤递归实现
问题:有⼀只猴⼦第⼀天摘下了若⼲个桃⼦,当即吃掉了⼀半,觉得不过瘾⼜多吃了⼀个;
第⼆天⼜将剩下的桃⼦吃掉了⼀半,还不过瘾⼜多吃了⼀个;按照这个吃法,每天都吃掉前⼀天剩下的⼀半⼜多⼀个。到了第⼗天,就剩下了⼀个桃⼦ 问:这只猴⼦第⼀天摘下了多少个桃⼦
⽬标:熟悉递归思想及求解简单递归问题的算法步骤
掌握递归函数定义、递归函数调⽤、递归函数声明等基本概念
掌握函数的嵌套调⽤与递归调⽤
/*猴⼦吃桃问题(递归)*/
/*问题:有⼀只猴⼦第⼀天摘下了若⼲个桃⼦,当即吃掉了⼀半,觉得不过瘾⼜多吃了⼀个;
第⼆天⼜将剩下的桃⼦吃掉了⼀半,还不过瘾⼜多吃了⼀个;按照这个吃法,每天都吃掉前⼀天剩下的⼀半⼜多⼀个。
到了第⼗天,就剩下了⼀个桃⼦问:这只猴⼦第⼀天摘下了多少个桃⼦*/
/*⽬标:熟悉递归思想及求解简单递归问题的算法步骤
掌握递归函数定义、递归函数调⽤、递归函数声明等基本概念
掌握函数的嵌套调⽤与递归调⽤*/
#include<stdio.h>//头⽂件
int fun(int n,int k)//递归函数定义 fun函数 int n,k两个整型变量
{//fun(n,k)参数n表⽰第n天剩余的桃⼦树参数k表⽰第k天剩余的桃⼦数为1
int sum;//定义⼀个整型变量sum
if(n == k)//if语句如果n等于k的话就执⾏下⾯语句
{
sum =1;//将1赋值给sum
}
else//否则
sum =2*(fun(n +1, k)+1);//调⽤递归函数函数⾥⾯再调⽤函数
return sum;//返回 sum
}
/* 若输⼊k=4
第⼀次 n=1 k=4 执⾏else sum=2*(fun(2,4)+1)
第⼆次求fun(2,4)
第三次求fun(3,4)
第四次求fun(4,4)此时4=4 执⾏if语句 sum=1 */
void main()//主函数
{
int k =10, sum =0;//定义两个整型变量 k,sum
printf("请输⼊猴⼦吃桃⼦的天数\n请输⼊k=");//提⽰此处输⼊猴⼦吃桃⼦的天数下⾏提⽰输⼊k值
scanf_s("%d",&k);//输⼊k的值输⼊猴⼦吃桃⼦的天数
sum =fun(1, k);//调⽤fun递归函数 1表⽰第⼀天剩余的桃⼦树 k表⽰第k天剩余的桃⼦数为1
printf("猴⼦第⼀天摘桃⼦为=%d",sum);//打印最终的结果猴⼦第⼀天摘的桃⼦数为多少
}c语言编写递归函数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论