开发者学堂课程【Go语言核心编程 - 基础语法、数组、切片、Map:递归调用课堂练习(2)】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/625/detail/9600
递归调用课堂练习(2)
练习题3
题3:猴子吃桃子问题
有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个。以后每天猴子都吃其中的一半,然后再多吃一个。当到第十天时,想再吃时(还没吃) ,发现只有1个桃子了。
问题:最初共多少个桃子?
思路分析:
1.第10天只有一个桃子
2.第9天有几个桃子 = (第10天桃子数量 + 1)*2
3.规律:第n天的桃子数量 peach(n)=(peach(n+1) + 1)*2
4.n的范围是 1--10之间
新建文件夹exercise03新建文件main.go
代码:
func peach(n int) int {
if n> 10 || n<1 {
fmt. Println("输入的天数不对")
return 0
//返回0表示没有得到正确数量
}
if n == 10 {
return 1
} else {
return (peach(n + 1) + 1) *2
}
}
func main() {
fmt.PrintIn("第1天桃子数量是=", peach(1))//1543
}
运行后 第1天桃子数量是= 1534
第10天桃子数量是= 1 第9天桃子数量是= 4
输入的天数不对
第11天桃子数量是 =0