在博客文章中偶然发现了这个糟糕的C++代码示例,没有任何解释为什么它被认为是"坏".我有自己的想法,但我想听听有经验的C++开发人员.
unsigned int Fibonacci (unsigned int n)
{
if (n == 0 || n == 1)
return n;
else
return Fibonacci (n - 1U) + Fibonacci (n - 2U);
}
Run Code Online (Sandbox Code Playgroud)
也许是因为它以指数时间运行?
详细说明上面的陈述:既然你没有记忆,你就会在第一次调用时产生2个进程,每个进程产生两个进程,依此类推,直到你遇到基本情况.
避免这种情况的三种方法:1)记忆,2)迭代地进行,或3)对Fibonacci序列使用闭合形式方程.:d
| 归档时间: |
|
| 查看次数: |
375 次 |
| 最近记录: |