-2

为了传达 Lambda 演算的优点,甚至 JavaScript 实现此类(图灵完备)公式的能力,我希望看到一个 JS 文件可以打印以下语言的正确字符串的最优雅和简洁的方式,给定一个自然数 n(从零开始):

一个n b n c n

这也意味着不使用外部库,也不使用迭代机制(例如“while”、“for”等)。

例如a n b n,作为一个上下文无关的语法可能不会比以下更简单:

function print(n) {if(n>0) {console.log('a'); print(n--); console.log('b');}}

4

1 回答 1

0

由于您在示例中可以使用递归,

function print(n) {
  printA(n);
  printB(n);
  printC(n);
}

function printA(n) {
  if (n > 0) {
    console.log('a');
  }
  printA(n - 1);
}

// with printB and printC implemented similarly.

如果这不那么吸引人,您可以以如下方式将三个 printX 函数组合在一起:

function printABC(n) {
  print(n,3*n);
}

function print(division, current) {
  if (current > 0) {
    if (current < division) {
      console.log('c');
    }
    else if (current < division * 2) {
      console.log('b');
    }
    else {
      console.log('a');
    }
    print(division, current - 1);
  }
}

<用vs给予或拿走一些关卡<=

于 2020-07-26T14:30:42.443 回答