爷爷家有一颗苹果树,红红的果在暑假挂满枝头,是小明最爱吃的,每个暑假小明都会带好朋友来爷爷家住上几天。每次爷爷都会根据小朋友吃苹果数量变化规律,提前摘下一筐苹果。
规律如下:
小朋友第一天会吃苹果总数的一半,还不过瘾,又多吃了一个。第二天早上又将剩下的苹果吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。于是到走的那一天只剩一个苹果了。请你编写程序,能够根据小明住的天数,帮爷爷计算出需要摘多少个苹果。
scratch按天数摘苹果
【输入描述】
输入一个正整数,存储到变量【天数】
【输出描述】
输出苹果总数,存储在变量【苹果总数】中,表示爷爷需要摘的总数。
解题思路:
设苹果总数为x,第一天吃了x/2-1,第二天吃了(x/2-1)/2-1,第三天吃了((x/2-1)/2-1)/2-1……..所以。
我们设
x/2-1=a1,
a2=a1/2-1
a3=a2/2-1
……
那么x=2(1+a1)
题目重点说出,走的那一天只剩一个苹果了。我们倒推过去,苹果总数为1,循环天数-1次。代码如下:
scratch递归算法