题目:斐波那契数列
2017-08-05 13:22
302 查看
程序分析:斐波那契数列(Fibonacci
sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
小白我尝试根据大神们的博客自己编程发现自己未曾理解的一个小知识点,大神请绕行,小白接着看哈。嘿嘿
(转载)解法:
def fib(n):
a,b=1,0
for i in range(n):
a,b=b,a+b
print(a)
fib(10)
结果:
0
1
1
2
3
5
8
13
21
完美解决,但是当我尝试自己编写时,我发现无法实现,输出结果完全不同
为什么出现这种结果呢,表面看我什么都没有改变啊,编程逻辑是一样的,问题就出现在这个看似一样的编程逻辑上
a,b=b,a+b
与
a=b
b=a+b是不一样的
例如:
a=1
b=0
a,b=b,a+b
print(a,b)
结果:a=0 b=1
a=1
b=0
a=b
b=a+b
print(a,b)
结果:a=0,b=0
输出结果是不一样的,看懂了嘛
a,b=b,a+b
是先执行等号=右边的式子,之后再赋值给左边的变量,也就是说b=a+b=1+0=1,所以b=1
sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
小白我尝试根据大神们的博客自己编程发现自己未曾理解的一个小知识点,大神请绕行,小白接着看哈。嘿嘿
(转载)解法:
def fib(n):
a,b=1,0
for i in range(n):
a,b=b,a+b
print(a)
fib(10)
结果:
0
1
1
2
3
5
8
13
21
完美解决,但是当我尝试自己编写时,我发现无法实现,输出结果完全不同
def fib(n): a=1 b=0 for i in range(n - 1): a=b b=a + b print(a) # 输出了第10个斐波那契数列 fib(10)
输出结果:
0 0 0 0 0 0 0 0 0
为什么出现这种结果呢,表面看我什么都没有改变啊,编程逻辑是一样的,问题就出现在这个看似一样的编程逻辑上
a,b=b,a+b
与
a=b
b=a+b是不一样的
例如:
a=1
b=0
a,b=b,a+b
print(a,b)
结果:a=0 b=1
a=1
b=0
a=b
b=a+b
print(a,b)
结果:a=0,b=0
输出结果是不一样的,看懂了嘛
a,b=b,a+b
是先执行等号=右边的式子,之后再赋值给左边的变量,也就是说b=a+b=1+0=1,所以b=1
相关文章推荐
- 九度OJ 题目4:斐波那契数列
- 题目1387:斐波那契数列
- 九度OJ题目1075:斐波那契数列
- 题目1387:斐波那契数列
- 【剑指Offer】面试招聘题目4:斐波那契数列
- 题目:斐波那契数列。(解法二)
- 题目4:斐波那契数列
- 题目1075:斐波那契数列
- [九度OnlineJudge][剑指Offer]题目1387:斐波那契数列
- 题目1387:斐波那契数列
- C语言-斐波那契(Fibonacci)数列三种不同求法时间复杂度分析
- 斐波那契数列递归与非递归算法
- 【编程题目】一个数组是由一个递减数列左移若干位形成的,在这种数组中查找某一个数。☆
- 斐波那契数列的变形(大众点评2015校园招聘测试岗的第一道编程题)
- 斐波那契(Fibonacci)数列的七种实现方法
- Fibonacci(斐波那契)数列的递归与非递归实现 python
- 哈理工OJ 2161 数列(数学题目)
- 斐波那契数列的矩阵解法(java实现)
- 斐波那契数列之递归、循环
- 斐波那契数列——腾讯面试题台阶问题