返回列表 发帖

[疯狂Java讲义] [菜鸟求助]122页524递归方法,这段代码想不明白!求指点,谢谢

由于第一次发帖子,好像没有疯狂金币,还请见谅,帮帮忙,谢谢了


题目是:已知有一个数列   f ( 0 ) = 1    f ( 1 ) = 4     f ( n + 2 ) = 2 * f (n + 1) + f ( n )   其中 n 是大于0的整数,求 f ( 10 ) 的值。

代码如下:
public class Recursive {
public static int fn(int n)
{
  if (n == 0)
  {
   return 1;
  }
  else if (n == 1)
  {
   return 4;
  }
  else
  {
   return 2 * fn(n - 1) + fn(n - 2);<<<===========================标记
  }
}

public static void main(String[] args) {
  System.out.println(fn(10));
}
}

标记这段代码应该是由 f ( n + 2 ) = 2 * f (n + 1) + f ( n )  演变来的吧,但是看不太懂,不知道具体是真么演变的,希望各位大哥指点下小弟,先谢谢了

[ 本帖最后由 一点二五升 于 2010-7-2 14:06 编辑 ]

提问赏金:1金币
获奖名单 : 还未派发赏金

TOP

这是一个简单的数学推算
原式是f ( n + 2 ) = 2 * f (n + 1) + f ( n )
那么你将n+2看成是一个n,那么式子不就是f(n) = 2*f(n - 1) + f(n - 2)了?(3个自变量是相减为1的等差数据)
楼主明白?

TOP

很基础的递归嘛...楼主你是什么地方不明白呢?是不明白什么是递归,还是不明白这里的递归用法?如果是后者,楼上说的挺清楚的...O(∩_∩)O~

[ 本帖最后由 ruralcpz 于 2010-7-3 14:41 编辑 ]

TOP

返回列表