《算法图解》chap3递归

线索Cues 笔记Notes
  •  递归
  • 将问题分成基线条件和递归条件
  • 栈(stack)

一、

  • 引例:盒子中还有盒子
  • 解决方法:
  1. 检查盒子中的每样东西
  2. 如果是盒子就回到第一步
  3. 如果是钥匙,就大功告成
  • 伪代码:
def look_for_key(box):
 for item in box:
  if item.is_a_box():
   look_for_key(item)
  elif item.is_a_key():
   print"found the key"

二、

  • 基线条件和递归条件:每个递归函数都有
  • 递归条件是值函数调用自己
  • 基线条件是指函数不再调用自己

三、

  • 栈是一种简单的数据结构
  • 调用一个函数里的另一个函数时,当前函数暂停并处于未完成状态,所有变量的值还在内存中
  • 递归函数的调用栈:
  •  伪代码:

def fact(x):

 if x==1:

  return 1

 else:

  return x*fact(x-1)

Codes

 c++

#include<iostream>
using namespace std;

int recursive(int a)
{
    if(a==1)
        return 1;
    else
        return a*recursive(a-1);
}

int main()
{
    int a=5;
    cout<<recursive(a)<<endl;
    return 0;
}
    

猜你喜欢

转载自www.cnblogs.com/huangyilong/p/11449581.html