我想问一下,下面这段代码最后的 output[n] = result 意义是什么,在这段代码里它好像并不会执行。书上说这段代码是用动态规划优化了递归算法,但是像下面这样数组里的元素好像永远不会改变,那跟原本的递归不就没有区别了吗。
public class test2 {
public static int output[] = new int[1000];
public static void main(String[] args) {
System.out.println(method(6));
}
public static int method(int n){
int result;
result = output[n];
if (result == 0){
if (n == 0)
return 0;
else if (n == 1)
return 1;
else {
return (method(n - 1) + method(n - 2));
}
}
output[n] = result;
return result;
}
}
if (result == 0) 条件不满足的情况下就会执行。
执行了啊。。。相当于记忆化搜索,将计算过的斐波那契数保存在 output 数组里,后面再用到就不要再递归,而是直接从数组里取,所以优化了递归的次数。
output就是输出结果的数组,output[n]=result只要result不为0就会执行啊
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!