-
程序功能正确,但处理负项的代码较为啰嗦,不简洁:
若否 i := 1 s := [a, b] 当始 ( i < -n ) c := a + b s := s + [c] a := b b := c i := i + 1 当终 x := s[-n] n := n + 1 k := math.pow(-1,n) k := k * x 返回 k 若终
这段代码使用了正项递推公式,然后再通过正项计算负项对应的斐波那契数,从原理上是可行的,但为何不直接使用负项递推公式进行计算?
另外,如果非要用上面的方法,在实现时,可以合并两个判断分支为一个分支,也就是说,对负项先算对应的正项,然后再求出负项对应的斐波那契额数。我们还可以进一步优化:不需要调用
math.pow(-1,n)
也能知道对应的斐波那契额数是正还是负。请按以上思路之一做优化和整理。
Please register or sign in to comment