簡體   English   中英

在不使用循環的情況下使用 JavaScript 生成語言 anbncn 字符串的最簡潔方法是什么?

[英]What is the most concise way to generate strings of language anbncn using JavaScript without using loops?

為了傳達 Lambda 微積分的優點,甚至 JavaScript 實現此類(圖靈完備)公式的能力,我希望看到一個 JS 文件可以打印以下語言的正確字符串的最優雅和簡潔的方式,給定一個自然數 n(從零開始):

a 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');}}

由於您在示例中可以使用遞歸,

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 <=給予或取消一些人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM