Algorithm 每个函数有两个值的递归伪代码
我正在研究这个问题,我认为这是一个递归问题。 每个函数的两个值(参数),而不是一个,是我遇到的问题 //前提条件:n和k是非负整数Algorithm 每个函数有两个值的递归伪代码,algorithm,recursion,pseudocode,Algorithm,Recursion,Pseudocode,我正在研究这个问题,我认为这是一个递归问题。 每个函数的两个值(参数),而不是一个,是我遇到的问题 //前提条件:n和k是非负整数 int f(int n, int k) if (k * n == 0) return 1 else return f(n - 1, k - 1) + f(n - 1, k) end if end f 调用f(4,2)返回什么值 我已经搜索了相当广泛的,我画了一个空白。 如果你能给我指出一个方向,特
int f(int n, int k)
if (k * n == 0)
return 1
else
return f(n - 1, k - 1) + f(n - 1, k)
end if
end f
调用f(4,2)返回什么值
我已经搜索了相当广泛的,我画了一个空白。
如果你能给我指出一个方向,特别是在处理这两个值时,我会非常感激。如果我必须解决这个问题,我会为
f
的值创建一个表格,在你得到f(4,2)
的答案之前填充一个小值。如果您想找出一个更通用的模式,这个表也应该有助于发现任何模式
对于初学者来说,在n=0或k=0的基本情况下很容易注入:
k\n | 0 1 2 3 4
----+----------------
0 | 1 1 1 1 1
1 | 1 ? ? ? ? ...
2 | 1 ? ? ? ?
...
然后,您可以开始填写非递归案例。例如,f(1,1)
等于f(0,0)
+f(0,1)
如果您仍在寻找实际答案,则答案为11:
$ python3
Python 3.5.1 (default, Mar 20 2016, 13:59:31)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> def f(n, k):
... if k * n == 0:
... return 1
... else:
... return f(n-1, k-1) + f(n-1, k)
...
>>> f(4, 2)
11
你有代码,需要知道它返回什么。所以,运行代码,或者在纸上完成它。为什么要搜索它?步骤1:由于
4*2
不是0
,f(4,2)
返回f(3,1)+f(3,2)
。您的问题已简化为两个更简单的问题。如果您认为某个答案解决了您的问题,您可以向上投票和/或将该问题标记为已接受,而不是用注释来回答。
$ python3
Python 3.5.1 (default, Mar 20 2016, 13:59:31)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> def f(n, k):
... if k * n == 0:
... return 1
... else:
... return f(n-1, k-1) + f(n-1, k)
...
>>> f(4, 2)
11