- 使用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
故这是此两个赋值表达式的区别!
故其输出结果为:
有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
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



