![]() |
1
12
虽然我知道你不想让一次枯燥的跑步来数电话,但我还是想先做,看看发生了什么。所以,这里是:
输出为:
所以,我们看到d-s=k的调用数是3乘以(k-1)的幂。 知道我们要证明什么有时会大大简化寻找证据的过程。
现在,为了证明自己。
会的
proof by induction
。
首先,请注意
基础是,因为
所以,为了
如果,通过归纳假设,我们已经证明了f(v)=3
V
对于所有v<k,则f(k)为:
最后,请注意,虽然所提出的算法是指数型的,但基本问题可以在多项式时间内解决,最简单的方法是在o((d-s)^2)中记住我们已经做了所有工作的调用。 |
![]() |
2
3
当使用递归时,有几个选项可以计算该数量。最简单的方法是在递归方法中添加另一个变量,该变量在每次递归时都会增加,在返回该变量的最后一条语句中,它不会增加,而只是返回最后一个值,这将递归“返回”到上层请求。 伪代码示例:
另一种工作方式是通过引用分配变量、指针或全局变量(取决于编程语言)并递增该计数器。 这对你有帮助吗? |
|
3
2
我认为一个全局变量驻留在函数之外(如果是Java中的一个成员,或者C++/C中的全局VAR),每次调用它时都会增加一个值。 |
![]() |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
![]() |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |