我是psuedocode的新手,我无法将所有部分组合在一起:
这是一个名为foo的函数的定义,它的输入是两个整数和一个整数数组a[1] ... a[n]
。
1 Foo(k,m, a[1],...,a[n])
2 if (k < 1 or m > n or k > m) return 0
3 else return a[k] + Foo(k+1,m,a[1],...,a[n])
假设输入整数为k=2
和m=5
,输入数组包含[5, 6, 2, 3, 4, 8, 2]
。 Foo有什么价值?使用求和符号,给出Foo计算的通用公式。
这个让我头疼。这是我到目前为止所做的:
第2行有三个条件语句:
所以这个功能会显示第3行。第3行说:
a[k]
a[2]
,这是数组的第二个值,即6。所以请取6并将其添加到(2+1, 5, a[1].....,a[n])
我所做的是正确的吗?如果是这样,我怎么知道a[n]
是什么?我应该找到那个吗?这一切的最终结果是什么?
答案 0 :(得分:2)
简单回答:该函数返回所有数字a [k],a [k + 1],... a [m]之和。
到目前为止,你所做的是正确的。 “n”只是一个占位符,意味着数组的最后一个元素。因此,如果您的输入数组是{5,6,2,3,4,8,2}
,n = 7
(因为您有七个元素)和a[n] = 2
。
但是为什么它返回所有数字a [k],a [k + 1],... a [m]的总和,你应该自己找出来。继续进行分析。 :)
答案 1 :(得分:1)
所以拿6并加到(2 + 1,5, 一个[1] .....,一个[N])
取6并将其添加到 Foo (2 + 1,5,a [1] .....,a [n])。这是一个递归函数。您必须再次使用k = 3和m = 5来评估函数。
答案 2 :(得分:0)
我觉得你很困惑,因为你的伪代码看起来像真正的代码。我可能错了,但我们被教导使用简单的英语短语以不同的方式编写伪代码。