新手问题 如何流程图表示下面的算法?

Mind · 2017年11月19日 · 最后由 5long 回复于 2017年11月20日 · 2562 次阅读
def fibonacci(number)
    if number < 2
        number 
    else
      fibonacci(number - 1) + fibonacci(number - 2)
    end
end

@ 这么多人是求屏蔽么?

Rei 回复

😂

既然你 @ 的人里不包括我,那么看来我也没有资格回答这个问题了。

再者,这个问题看上去就像是家庭作业

先帮你修改一下代码风格:

def fibonacci(number)
    return number if number < 2  
    fibonacci(number - 1) + fibonacci(number - 2)
end

另外感觉你应该是还没有掌握递归这个概念?递归的算法都需要一个基本条件(basecase),程序一旦满足了基本条件,递归就会终结。理解了这个概念,流程图就很容易画了。

gingerhot 回复

我知道这道的基本条件是 number < 2,给我一个数值我也能算出来结果,可是我画不出流程图. 能麻烦你能帮我画个草图吗?

gingerhot 回复

你的这个代码风格是使用 if modifier 和 return 做的,非常简洁漂亮,但是表示的算法还是和原来的代码一样,我画不出来😂

Mind 回复

为什么不先搜索一下呢?
另外,这是「Guard Clause」,减少嵌套层次的一种重构方法,不是说把 if 写在同一行就简洁漂亮了...

return number if number < 2 

流程图是下面这样: 虽然觉得很奇怪感觉,这个流程图和我计算的过程并不相同。

gingerhot 回复

谢谢,我一开始没懂你的意思😂 . 感谢你的帮助。谢谢

zhandao 回复

谢谢,问题解决了。但感觉这个流程图并不适合在读代码的时候在脑子里想出来,然后按照流程图计算。反而用自然语言描述这个算法后比较容易计算. 感谢

5long 回复

谢谢。应该这问题对于各位的确太简单了😖 ,但我感觉想要相处画这张流程图的思路好难啊 我想看看用流程图描述这个算法,比用自然语言等方式描述更便于计算。

Awlter1 回复

? 啥意思

Mind 回复

与问题是否简单无关。因为,呃,如果你读过了我给出的链接所指向的那一段你就知道原因了。我这边就不再复制粘贴。

Mind 关闭了讨论。 12月29日 18:45
需要 登录 后方可回复, 如果你还没有账号请 注册新账号