处理递归方法

时间:2015-08-12 21:55:48

标签: java recursion

当您使用递归来解决问题时,为什么递归方法需要调用自身来解决原始问题的较小版本?

3 个答案:

答案 0 :(得分:0)

根据定义,递归函数会调用自身。

如果您在 时询问,那么您将使用递归,它非常适合类似分形的问题。 IOW,当问题的小部分看起来类似于问题的较大版本时。

答案 1 :(得分:0)

递归地解决问题背后的一般想法是找到一种方法将问题分解为自身的较小副本,解决那些较小的副本,然后将结果组合在一起以解决整体问题。

所以让我们假设您正在尝试编写一个函数solveProblemX来递归地解决问题X.您将问题分解为问题X的较小副本,现在您需要解决每个问题。你是怎样做的?好吧,您目前正在编写一个名为solveProblemX的方法,专门用于解决问题X,因此一个选项是在这些较小的问题实例上递归调用solveProblemX。毕竟 - 如果solveProblemX真的应该解决X型问题,那么这样做没有错!

从问题到问题的哪些变化是如何将问题分解为自身的较小副本以及如何将它们组合在一起。但是,在每种情况下,请记住,您正在编写的函数是设计解决一种类型的问题,因此没有任何关于调用您正在编写的方法来解决该类型的较小问题。

答案 2 :(得分:0)

我会尝试解释我向他解释的方式。

说你在咖啡店排队。这条线真的很长,你一直都在后面。你想知道有多少人在你面前,但你无法看到前方,所以你不能自己计算每个人。你反而问问在你面前的人"你面前有多少人?"。然后他遵循同样的逻辑,并问他面前的人。每个人都会问他们面前的人,直到他们到达登记处的人。一旦被问到前面的人,他们回答0.这将是基本情况。在前面的人回应之后,排队的第二个人回答0 + 1,所以1.这一直持续到你身边,直到你知道有多少人在排队。

我从某个地方解释某些东西,但我不记得我最初看到它的地方。