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(x)
    用一些参数声明一个新的函数F
  • Q我猜这是。看起来语法的含义如下所示:

    • 函数F(x)
      用一些参数声明一个新的函数F
    • Q简短回答
      调用
      Get number(n)
      返回第n个最小的自然数,该自然数只有2、3或5个素数因子。这些数字的列表如下所示:

      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
        的空队列。在下一步中,我们将1推到它,使
        Q=[1]
      • 我们取出最右边的数字
        x
        。然后分别调用
        Unique-Enqueue(Q,2x)
        Unique-Enqueue(Q,3x)
        Unique-Enqueue(Q,5x)
      • 最后,我们返回
        x
        的最终值。因此,我们有效地丢弃了函数末尾的队列
        Q
        ,只保留
        x
        的最终值
      总的来说,给定一个输入
      n
      ,此函数将返回一个输出
      x
      ,该输出可在执行上述所有函数调用后获得。 现在让我们看看另一个函数

      唯一排队(Q,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
      简短答案的最后一个值 调用
      Get number(n)
      返回第n个最小的自然数,该自然数只有2、3或5个素数因子。这些数字的列表如下所示:

      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
        的空队列。在下一步中,我们将1推到它,使
        Q=[1]
      • 我们取出最右边的数字
        x
        。然后分别调用
        Unique-Enqueue(Q,2x)
        Unique-Enqueue(Q,3x)
        Unique-Enqueue(Q,5x)
      • 最后,我们返回
        x
        的最终值。因此,我们有效地丢弃了函数末尾的队列
        Q
        ,只保留
        x
        的最终值
      总的来说,给定一个输入
      n
      ,此函数将返回一个输出
      x
      ,该输出可在执行上述所有函数调用后获得。 现在让我们看看另一个函数

      唯一排队(Q,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

      的最后一个值。虽然有些语言有左箭头之类的符号,但它可能只是伪代码,请用类似代码的语言描述算法。如果不知道这本书或者你在哪里找到了你展示的代码,那么任何人都无话可说。这本书本身很可能描述了其中使用的符号