第十四课 递归和迭代

递归和迭代

Q1 递归计算 斐波那契数列

1
2
3
4
5
6
7
8
int fun(int n)
{
    n -= 1;
    switch(n)
        case 0:
        case 1: return 1;
    return fun(n-1)+fun(n-2);
}
  1. 在switch中,如果default语句在最前面且没有跳出语句,而case没有匹配到,则接着执行后面的case语句;
  2. 有些编译器,switch语句如果没有匹配到,就从头执行case,大部分都会跳过switch整个语句块;
1
2
3
4
5
6
7
8
switch(x)
{
    default: 
    case 0:
    case 1: x=1;
}

// 当 x=2 时,输出的结果为 x=1;

回到递归

当两个函数互相调用对方,称为间接调用;

递推:由已知求未知,比如阶乘由1到100;

递归:由未知到已知,由100到1;

Q2 汉诺塔

只能用递归来解决;

Licensed under CC BY-NC-SA 4.0
本文阅读量 次, 总访问量 ,总访客数
Built with Hugo .   Theme Stack designed by Jimmy