语法格式
for 初始值; 条件判断为ture才继续执行; 赋值表达式 {
循环体1
for 初始值; 条件判断为ture才继续执行; 赋值表达式 {
循环体2
}
}
应用
斐波那契数列
是这样一个数列:1、1、2、3、5、8、13、21、34……这个数列从第三项开始,每一项都等于前两项之和。编写一个斐波那契数列的程序,输入第n项,程序输出对应第n项的值。
其中我们可以总结出,该数列的数学表达为
在写代码的过程中需要确定6个基础量: a1, a2 , an , an-1, an-2, n, 其输出结果为 an
M1:循环实现
则代码为:
package main
import "fmt"
func fibonacci(n int) (res int) {
a := 1 // a1
b := 1 // a2
for i := 2; i < n; i++ { // 一共需要循环n次
c := b // 设置中间暂存量 c
b = a + b // 完成 an = an-1 + an-2
a = c // 更新参数 an-1,完成递归
} // 构造了n 次循环
return b
}
func main() {
n := 9
fmt.Printf("斐波那契数列第%d项值为%d",n,fibonacci(n))
}
python实现;
def fib_loop_for(n):
a, b = 1, 1
for _ in range(n):
a, b = b, a + b
return a
for i in range(9):
print(fib_loop_for(i), end=' ')
M2:递归实现
Go
package main
import "fmt"
func fibonacci(n int) (res int) {
if n == 1 || n == 2 {
return 1
} else {
return fibonacci(n-2) + fibonacci(n-1)
}
}
func main() {
n := 9
fmt.Printf("斐波那契数列第%d项值为%d", n, fibonacci(n))
}
Python
def fib_recur(n):
assert n >= 0, "n > 0"
if n <= 1:
return n
return fib_recur(n-1) + fib_recur(n-2)
for i in range(1, 9):
print(fib_recur(i), end=' ')
金字塔结构
package main
import "fmt"
func pyramid(n int) {
for i := 1; i <= n; i++ {
for j := 1; j <= n-i; j++ {
fmt.Print(" ")
}
for k := 1; k <= 2*i-1; k++ {
fmt.Print("*")
}
fmt.Println()
}
}
func main() {
n := 9
pyramid(n)
}