关于Fibonacci数列迭代法实现的问题
本帖最后由 世界第一大栗旬 于 2021-5-6 16:33 编辑根据这段代码里的以下部分:
if n < 1:
print('输入有误')
return -1
即:如果输入的参数小于1,将返回-1。
而后续的【return c】是一条并列的指令,应该是不需要条件、必定会执行的,那么返回值 -1 为什么不会被 c 覆盖呢
(已经运行过,当输入的n < 1时,返回值的确是-1)
来个全代码看下 dragon_xiao 发表于 2021-5-6 11:32
来个全代码看下
诶,原帖中的截图不能正常显示吗,图中是完整的一段代码
文本版如下:
def fib(n):
a = 1
b = 1
c = 1
if n < 1:
print('输入有误')
return -1
while (n-2) > 0:
c = a + b
a = b
b = c
n -= 1
return c
result = fib(20)
if result != -1:
print('总共有%d只兔子' % result) 世界第一大栗旬 发表于 2021-5-6 11:38
诶,原帖中的截图不能正常显示吗,图中是完整的一段代码
文本版如下:
return -1之后这段代码就退出不会往下运行了,所以不会执行return c 本帖最后由 柿子饼同学 于 2021-5-6 13:52 编辑
世界第一大栗旬 发表于 2021-5-6 11:38
诶,原帖中的截图不能正常显示吗,图中是完整的一段代码
文本版如下:
它不是有一个条件判断嘛,if n < 1:
print('输入有误')
return -1
这样如果小于1就直接返回-1,这个程序就这样结束了那要是大于等于1那就没她的事了呗
就不执行if里的代码了
就执行下面的内容 while (n-2) > 0:
c = a + b
a = b
b = c
n -= 1
return c
所以这两个虽然并列,但是是有条件控制的,只不过没有else罢了
思路就像这样# |--> x大于等于1,返回c
#fib(x)---判断---->|
# |--> x小于1,返回-1{:9_227:} 再举个简单的栗子,这里难道说完x是0之后还要说不是0嘛?
return语句之后程序就结束了知道吗
def a(x):
if x == 0:
return 'x是0!'
return 'x不是0!' 柿子饼同学 发表于 2021-5-6 13:25
它不是有一个条件判断嘛,
这样如果小于1就直接返回-1,那要是大于等于1那就没她的事了呗
就不执行if里 ...
按照你的思路,那也是if else 语句控制,而不是 if while 语句,你增加一个else 就是合法可执行语句。
def fib(n):
a = 1
b = 1
c = 1
if n < 1:
print('输入有误')
return -1
else:
while (n-2) > 0:
c = a+b
a = b
b = c
n -= 1
return c
result = fib(20)
if result != -1:
print('总共有%d只兔子' % result)
总共有6765只兔子
dragon_xiao 发表于 2021-5-6 14:02
按照你的思路,那也是if else 语句控制,而不是 if while 语句,你增加一个else 就是合法可执行语句。
...
我的意思是,return完之后就结束程序了{:10_245:} 柿子饼同学 发表于 2021-5-6 13:25
它不是有一个条件判断嘛,
这样如果小于1就直接返回-1,这个程序就这样结束了那要是大于等于1那就没她的 ...
明白了!谢谢你! 世界第一大栗旬 发表于 2021-5-6 16:01
明白了!谢谢你!
有帮助记得评最佳答案哦
蟹蟹
页:
[1]