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

Mind · November 19, 2017 · Last by 5long replied at November 20, 2017 · 2557 hits
def fibonacci(number)
    if number < 2
        number 
    else
      fibonacci(number - 1) + fibonacci(number - 2)
    end
end

@ 这么多人是求屏蔽么?

Reply to Rei

😂

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

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

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

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

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

Reply to gingerhot

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

Reply to gingerhot

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

Reply to Mind

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

return number if number < 2 

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

Reply to gingerhot

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

Reply to zhandao

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

Reply to 5long

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

Reply to Awlter1

? 啥意思

Reply to Mind

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

Mind closed this topic. 29 Dec 18:45
You need to Sign in before reply, if you don't have an account, please Sign up first.