猴子吃桃问题 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);//打印最终的结果 猴子第一天摘的桃子数为多少
}
  • 9
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值