问题描述
所以我的工作是转换这个方法:
long fib(long n) {
long i = -1,a = 0,b = 1;
while (++i != n)
b = a + (a = b);
return a;
}
进入另一种迭代斐波那契方法,该方法仍然完全相同,不同之处在于新方法只允许包含简单的指令/赋值(但在这种情况下也允许 while 循环)。
所以我做了这个方法:
public static long fib2(long n){
long i = 0;
long a = 0;
long b = 1;
while (i != n){
long oldA = a;
a = b;
b = oldA + a;
++i;
}
return a;
}
我现在的问题是:是否可以简化方法并仍然只保留第一种方法(n、i、a、b)中的所有旧变量,或者我是否必须创建一个新变量(在我的情况下为 oldA ) 所以。因为如果可以只用旧变量来做,那会更好,但我不知道怎么做。
我问这一切是因为在下一步中我需要找到这个方法的循环不变量,我认为如果我只有给定的变量而不添加新的变量会更容易。 (我觉得不确定)。
提前谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)