开发者学堂课程【Go语言核心编程 - 基础语法、数组、切片、Map:递归调用课堂练习(1)】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/625/detail/9599
递归调用课堂练习(1)
下面给出两个经典的递归调用练习题
题1:斐波那契数
请使用递归的方式,求出斐波那契数1,1,2,3,5,8,13...给你一个整数n,求出它的值是多少?
题2:求函数值
已知 f(1)=3;f(n)=2*f(n-1)+1;
请使用递归的思想编程,求出f(n)的值?
题1思路:
1.当n==1 || n==2,返回1
2.当n>=2,返回前面两个数的和 f(n-1)+f(n-2)
代码:
func fbn(n int) int {
if (n ==1 || n== 2) {
return 1
} else {
return fbn(n-1)+fbn(n-2)
}
}
func main() {
res fbn(3)
//测试
fmt.Println("res="res)
fmt.Println("res=",fbn(4)) //3
fmt.Println("res=",fbn(5)) //5
fmt.Println("res=",fbn(6)) //8
fmt.Println("res=",fbn(7)) //13
题2思路:
直接使用给出的表达式即可完成
代码:
package main
import(
"fmt"
/*
题2:求函数值配知f(1)=3;f(n)=2*f(n-1)+1;请使用递归的思想编程,求出 f(n)的值?
*/
func f(n int) int {
if n == 1 {
return 3
} else {
return 2 * f(n-1) + 1
}
}
func main(){
//测试一下
fmt.PrintIn("f(1)=", f(1))
fmt.PrintIn("f(1)=", f(5))
}
课后思考练习
猴子吃桃子问题
有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个!以后每天猴子都吃其中的一半,然后再多吃一个。当到第十天时,想再吃时(还没吃),发现只有1个桃子了。问题:最初共多少个桃子?