Go语言学习--No.8 循环嵌套的应用

语法格式

	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)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值