猴子吃桃问题

14天阅读挑战赛
努力是为了不平庸~
算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算法的理解,同时吸收他人的奇思妙想,一起见证技术er的成长~

标题

猴子吃桃问题

算法知识点

可以利用循环和递归进行简单的进行运算

算法题目来源

课本习题

做题思路

 我们采用逆推的方法,先找规律。

如果是两天->第二天x(桃子) = 1,因为4/2-1 = 1,所以第一天x = 4;

(4 = (1+1)*2)

如果是三天->第三天 x = 1, 第二天x = 4,因为10/2-1 = 4,所以第一天x = 10;

(10 = (4+1)*2)

如果是第四天->第四天 x = 1,第三天x = 4,第二天 x = 10,第一天就为22;

(22 = (10+1)*2)
第二种方法
(1) 定义 day、x1、x2 为基本整型,并为 day 和 x2 赋初值 9 和 1。

(2) 使用 while 语句由后向前推出第一天摘的桃子数。

(3) 输出结果。

第一种的代码实现

#include
int main()
{
int i,j,sum = 1;
int day;
printf(“Input days:\n”);//输入天数
scanf(“%d”,&day);
if(day>=0)
{
for(i = 1;i<=day;i++)
{
sum =(sum+1)*2;//每次都会用到上一次的桃子数量,注意这里不是求和。
}
}
else
{
return;
}
printf(“sum = %d\n”,sum);
return 0;
}

第二种的代码实现

#include /*定义 头文件以及使用到的库/
int main() /函数的入口,以及主函数/
{
intday,x1,x2; /定义 day、x1、x2 3 个变董为基本整型/
day=9;
x2=1;
while(day>0) /使用循环进行对天数进行遍历/
{
x1=(x2+1)*2; /第一天的桃子数是第二天桃子数加1后的2倍/
x2=x1; /赋值/
day–; /因为从后向前推所以天数递减/

}
printf(“the total is %d\n”,x1); /* 输出桃子的总数*/
return 0;
};

读书笔记

提示:熟悉思路,并能熟练敲出,并能熟练的举一反三。

你可能感兴趣的:(算法,c++,数据结构)