递归算法面试题
程序员文章站
2024-03-20 22:19:10
...
一、斐波拉契递归详解
int Fib(int n)
{
if (n < 2)
return 1;
return Fib(n - 1) + Fib(n - 2);
}
3 == Fib(3);
/*
3 == Fib(3);
↓
Fib(3 - 1) + Fib(3 - 2)
↓ ↓
Fib(2) + Fib(1)
↓ ↓
Fib(2 - 1) + Fib(2 - 2) + 1
↓ ↓ ↓
Fib(1) + Fib(0) + 1
↓ ↓ ↓
1 + 1 + 1 = 3
*/
二、阶乘问题通过递归实现
int Factorial(int n) {
if (n == 1)
return 1;
return n * Factorial(n - 1);
}
三、汉诺塔问题通过递归实现
void move(int n, char x, char y, char z) {
// 将n个盘子从x借助y移动到z上
if (1 == n) {
cout << x << "-->" << z << endl;
} else {
// 将n-1个盘子从x借助z移动到y上
move(n - 1, x, z, y);
// 将第n个盘子从x移动到z上
cout << x << "-->" << z << endl;
// 将n-1个盘子从y借助x移动到z上
move(n - 1, y, x, z);
}
}
上一篇: hystrix的服务降级
下一篇: springCloud微服务初探