- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
似乎是斐波那契算法的优化版本正在使用内存。
示例:
int cache[N] = {0};
int fibonacci(int n) {
if(cache[n] != 0) return cache[n];
if(n ==1 || n == 2) cache[n] = 1;
else cache[n] = fibonacci(n - 1) + fibonacci(n - 2);
return cache[n];
}
这被描述为自上而下的解决方案。
但为什么?要找到 fibonacci(10)
,我们需要递归调用所有较低的数字,直到达到 1 并开始累积。所以在我看来这是一种自下而上的方法。
为什么是从上到下?
最佳答案
自上而下或自下而上的方法没有正式的定义,但通常自上而下的方法是从一个更大的问题开始,将其分割为更小的部分,然后将较小问题的解决方案组合成原始问题的解决方案。自下而上的解决方案是从小问题的解决方案开始,逐步扩大规模,直到找到解决整个问题的解决方案。
您上面的功能使用了内存。由于该函数是递归的,它表现出典型的自上而下的模式,即从一个更大的问题开始,将其拆分成多个部分,然后将它们组合起来。而且,由于该函数缓存其结果,并且该缓存以从较小的项开始并逐渐增长到较大的项的方式填充,因此缓存似乎是自下而上运行的。
我以前没有听说过“自上而下”这个词,但我见过许多其他类似的算法,它们展示了一些自上而下的结构与自下而上的方法相结合。 LR 解析就是一个很好的例子 - 它自下而上地工作,以对最终自上而下结构的理解为指导。
关于algorithm - 为什么带缓存的优化斐波那契被描述为自上而下的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46394801/
我在 OSX 10.10 上使用 XCode 6.1.1 我有一个以下 cocoa 窗口 我无法仅使用 IB 制作垂直自上而下的 slider 。 (B View 中的第二个 slider ) 如示例
我目前正在类里面学习自上而下的 C 编程,但不知何故我无法真正掌握它的窍门。 我一直在尝试通过这个编程练习来学习它,你必须根据某人的到达时间(以及以公里/小时为单位的速度和以公里为单位的距离)来计算某
元素的合并排序过程步骤是什么:20 47 15 8 9 4 40 30 12 17 我遇到过这个...... Pass1: |20 47| |8 15| |4 9| |30 40| |12 17| P
问题 - 给定一个长度为 N 的整数数组 A,找到先递增后递减的最长子序列的长度。输入:[1, 11, 2, 10, 4, 5, 2, 1] 输出:6 解释:[1 2 10 4 2 1]是最长的子序列
我是来自 2D SpriteKit 的 SceneKit 新手,并试图弄清楚如何调整相机,使其面朝下位于世界顶部。我的位置部分是正确的,但是在旋转时我遇到了困难。如果我调整X,是or Zaxis, n
这是我的笨蛋吗?的一天。以下代码不会按顺序运行(如从上到下),它从顶部跳到底部然后运行中间。另一方面,如果我放一个 Console.WriteLine(); 它将自上而下运行。和 Console.Re
昨天 我正在玩 CoordinatorLayout 和 TabView 1) 我的目标是什么? CoordinatorLayout 和 TabView 当我向上滚动时一个 View 如.GIF所示 向
我正在查看 this example它使用簇布局将 X 和 Y 坐标分配给树状图上的节点。我怎么知道cluster垂直布局,自上而下,而不是默认的从左到右? 最佳答案 对于example你链接,只是翻
我有一个 Kendo UI 图表,在 3 个不同的值轴上显示 3 个系列的数据。 “广告位置”值轴是反向的,1 是可能的最高值(根据图像)。 如您所见,这会导致“广告位置”系列“自上而下”呈现。 有谁
注意:我并不是要将 3D 对象投影到 2D 相机 View 图像(对此有很多答案)。 它甚至比这更简单:我有一个 3D 模型,比如说,一条街道。我想把它变成街道 map 。所以这是一个简单的自上而下/
我正在尝试使用谷歌浏览器的 Trace Event Profiling Tool分析我正在运行的 Node.js 应用程序。选择点样本后,我可以在三种 View 之间进行选择: 自上而下(树) 自上而
我正在自动化我们通常每月在 Word 中手动输入一次的报告,它的目标用户要求它总是看起来完全符合他们指定的方式 - 它需要有两个内容列,像 MS Word/a 一样换行报纸 - 第一栏的结尾换行到第二
我是一名优秀的程序员,十分优秀!