栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

【面试练习题】存在序列:1,1/2,2/3,3/5,5/8,8/13...,求前10项的和

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【面试练习题】存在序列:1,1/2,2/3,3/5,5/8,8/13...,求前10项的和

存在序列:1,1/2,2/3,3/5,5/8,8/13...,求前10项的和
  • 使用python编程语言解题:
  • 使用typescript编程语言解题:
  • 使用Go语言进行解题:

由题可以得知,分子是前一个数字项的分母,分母是前两个数字项的分母之和,由此可得代码:

使用python编程语言解题:
"""
存在序列:1, 1/2, 2/3, 3/5, 8/13, ... 的序列,求这个数列的前10项之和
"""
a = 1 	# 分子
b = 1 	# 分母
s = 0	# 数列和

for i in range(10):
	s += a/b
	a, b = b, a+b
print("结果是 {:.2f}".format(s))		# 结果保留小数点后两位

此处应注意:a, b = b, a+b 和 a=b , b=a+b的区别
a, b = b, a+b是先运算赋值号=左边的数值,再依次赋值给左边的数值,即:

当 a = 1,b = 2 时:
b = 2
a+b = 2+1
再分别赋值给 a 和 b,即a = 2,b = 3

而 a=b , b=a+b是依次运行赋值,即

当 a = 1,b = 2 时:
a = b = 2
b = a+b = 2+2
即a = 2,b = 4

故这是此两个赋值表达式的区别!
故其输出结果为:


使用typescript编程语言解题:

有python编程语言我们可以得知,此时x和y两个变量会同时赋值,由于在ts中我不懂得如何使用类似python语言中a, b = b, a+b 这样的赋值表达式,故采用了新的值z进行接收变化前的x,从而达到解题的目的。故其解题步骤如下:

function sequence() {
    let x = 1;
    let y = 1;
    let z = 0;
    let sequenceSum = 0;

    for (let number = 0; number < 10; number++) {
        sequenceSum += x / y
        z = y
        y = x + y
        x = z
    }
    // 结果保留后两位小数
    console.log(sequenceSum.toFixed(2))
}
sequence()

输出结果:保留两位小数,故等于6.48

使用Go语言进行解题:
package main

import (
	"fmt"
	"strconv"
)

func main() {
	arrList()
}

func arrList() {
	// 获取初始值
	var x float64 = 1
	var y float64 = 1
	var z float64 = 0
	var sum float64

	for i := 0; i < 10; i++ {
		sum += (x / y)
		z = y
		y = x + y
		x = z
	}

	// 保留小数点后两位
	value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", sum), 64)
	fmt.Println(value)

}

输出结果:保留两位小数,故等于6.48

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991644.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号