【发布时间】:2013-11-22 21:30:23
【问题描述】:
快速计算斐波那契的快速方法,使用 Matrix 属性
Divide_Conquer_Fib(n) {
i = h = 1;
j = k = 0;
while (n > 0) {
if (n%2 == 1) { // if n is odd
t = j*h;
j = i*h + j*k + t;
i = i*k + t;
}
t = h*h;
h = 2*k*h + t;
k = k*k + t;
n = (int) n/2;
}
return j;
}
我如何理解这段代码?你的策略是什么?你会放很多打印语句来查看变量的状态如何变化吗? 了解不同开发人员的想法如何理解这段代码很重要。
【问题讨论】:
-
我会看到它对 1,2,3,2n,2n+1 的表现,因为该算法适用于偶数和奇数。我会用纸和笔代替 printf
-
我会拿一张纸,用我的铅笔“运行函数”来做一个非常简单的案例
-
这个问题似乎是题外话,因为它是在征求程序员的意见,并指出“重要的是看看不同开发人员的想法是如何理解这段代码的”,这非常离题这个网站的主题。
-
还是很有趣的:)
-
@ScottMermelstein,我想看看开发人员的流程——他的想法