算法(一)之递归

我直接用王争老师的例子了。

这是典型的递归例子,表达式如下

int f(int n) {
  if (n == 1) return 1;
  return f(n-1) + 1;
}

解释下这段代码,如果你是第五排

f(5) ->                             f(5-1)   + 1 
      ->                     (f(4-1) + 1)   + 1 
      ->             ((f(3-1) + 1) + 1)  + 1 
      ->    (((f(2-1) + 1) + 1) + 1)  + 1
      ->    (((1+         1) + 1) + 1)  + 1
      ->     5

递归要满足三个条件:
1.一个问题可以分解为几个子问题的解
2.子问题与其父问题的解决思路一样
3.存在递归的终止条件
例子中的终止条件是 f(1) = 1即第一排的人知道自己是第一排,否则无法用递归。

猜你喜欢

转载自www.cnblogs.com/jiangxiaoxian/p/9862702.html