Algorithm 识别以下代码所用的编程语言
我刚开始学习计算机编程,我想学习更多关于编程算法的知识。我买了一些参考书。然而,当我读这本书时,我发现一些代码如下:Algorithm 识别以下代码所用的编程语言,algorithm,programming-languages,pseudocode,Algorithm,Programming Languages,Pseudocode,我刚开始学习计算机编程,我想学习更多关于编程算法的知识。我买了一些参考书。然而,当我读这本书时,我发现一些代码如下: function Get-Number(n) Q ← NIL Enqueue(Q,1) While n > 0 do x ← Dequeue(Q) Unique-Enqueue(Q,2x) Unique-Enqueue(Q,3x) Unique-Enqueue(Q,5x)
function Get-Number(n)
Q ← NIL
Enqueue(Q,1)
While n > 0 do
x ← Dequeue(Q)
Unique-Enqueue(Q,2x)
Unique-Enqueue(Q,3x)
Unique-Enqueue(Q,5x)
n ← n – 1
return x
function Unique-Enqueue(Q,x)
i ← 0
while i < |Q| ^ Q[i] < x do
i ← i + 1
if i < |Q| ^ x = Q[i] then
return
Insert(Q,i,x)
{1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, ...}
函数获取编号(n)
Q← 无
排队(Q,1)
当n>0时
x← 出列(Q)
唯一排队(Q,2x)
唯一排队(Q,3x)
唯一排队(Q,5x)
N← n–1
返回x
函数唯一排队(Q,x)
我← 0
而我<| Q | ^Q[i]
我已经学习了一些C语言的基础知识,但我没有看到那种代码,我不能理解算法。有人知道上面代码的编程语言是什么吗?非常感谢你 我猜这是我的错。看起来语法的含义如下所示:
用一些参数声明一个新的函数F函数F(x)
Q我猜这是。看起来语法的含义如下所示:
用一些参数声明一个新的函数F函数F(x)
Q简短回答 调用
返回第n个最小的自然数,该自然数只有2、3或5个素数因子。这些数字的列表如下所示:Get number(n)
function Get-Number(n) Q ← NIL Enqueue(Q,1) While n > 0 do x ← Dequeue(Q) Unique-Enqueue(Q,2x) Unique-Enqueue(Q,3x) Unique-Enqueue(Q,5x) n ← n – 1 return x function Unique-Enqueue(Q,x) i ← 0 while i < |Q| ^ Q[i] < x do i ← i + 1 if i < |Q| ^ x = Q[i] then return Insert(Q,i,x)
详细说明 完整的代码有两个功能。我将逐一解释每一步 获取编号(n){1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, ...}
- 将创建名为
的空队列。在下一步中,我们将1推到它,使Q
Q=[1]
- 我们取出最右边的数字
。然后分别调用x
、Unique-Enqueue(Q,2x)
和Unique-Enqueue(Q,3x)
Unique-Enqueue(Q,5x)
- 最后,我们返回
的最终值。因此,我们有效地丢弃了函数末尾的队列x
,只保留Q
的最终值x
,此函数将返回一个输出n
,该输出可在执行上述所有函数调用后获得。 现在让我们看看另一个函数 唯一排队(Q,x)x
函数唯一排队(Q,x) 我← 0 而我<| Q | ^Q[i]
- 在当前的
中,继续向右移动,直到找到一个数字 不满足Q
,即,找到队列中从左向右移动的第一个数字,该数字至少与Q[i]
一样大x
- 有三种可能的情况。如果此数字等于
,则停止。如果此数字大于x
,请在此数字前插入x
。如果没有此类编号,请在末尾插入x
x
:获取号码(4)
- 最初
Q=[1]
在第一个循环之后Q=[2,3,5]
在第二个循环之后Q=[3,4,5,6,10]
在第三个循环之后Q=[4,5,6,9,10,15]
在第四个循环之后Q=[5,6,8,9,10,12,15,20]
返回Get number(4)
,因为这是我们的4
简短答案的最后一个值 调用x
返回第n个最小的自然数,该自然数只有2、3或5个素数因子。这些数字的列表如下所示:Get number(n)
function Get-Number(n) Q ← NIL Enqueue(Q,1) While n > 0 do x ← Dequeue(Q) Unique-Enqueue(Q,2x) Unique-Enqueue(Q,3x) Unique-Enqueue(Q,5x) n ← n – 1 return x function Unique-Enqueue(Q,x) i ← 0 while i < |Q| ^ Q[i] < x do i ← i + 1 if i < |Q| ^ x = Q[i] then return Insert(Q,i,x)
详细说明 完整的代码有两个功能。我将逐一解释每一步 获取编号(n){1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, ...}
- 将创建名为
的空队列。在下一步中,我们将1推到它,使Q
Q=[1]
- 我们取出最右边的数字
。然后分别调用x
、Unique-Enqueue(Q,2x)
和Unique-Enqueue(Q,3x)
Unique-Enqueue(Q,5x)
- 最后,我们返回
的最终值。因此,我们有效地丢弃了函数末尾的队列x
,只保留Q
的最终值x
,此函数将返回一个输出n
,该输出可在执行上述所有函数调用后获得。 现在让我们看看另一个函数 唯一排队(Q,x)x
函数唯一排队(Q,x) 我← 0 而我<| Q | ^Q[i]
- 在当前的
中,继续向右移动,直到找到一个数字 不满足Q
,即,找到队列中从左向右移动的第一个数字,该数字至少与Q[i]
一样大x
- 有三种可能的情况。如果此数字等于
,则停止。如果此数字大于x
,请在此数字前插入x
。如果没有此类编号,请在末尾插入x
x
:获取号码(4)
- 最初
Q=[1]
在第一个循环之后Q=[2,3,5]
在第二个循环之后Q=[3,4,5,6,10]
在第三个循环之后Q=[4,5,6,9,10,15]
在第四个循环之后Q=[5,6,8,9,10,12,15,20]
因此,
返回Get number(4)
,因为这是我们的4
的最后一个值。虽然有些语言有左箭头之类的符号,但它可能只是伪代码,请用类似代码的语言描述算法。如果不知道这本书或者你在哪里找到了你展示的代码,那么任何人都无话可说。这本书本身很可能描述了其中使用的符号x
- 将创建名为