簡體   English   中英

我陷入了multiplicativePersistence算法問題。 我不知道為什么這段代碼不起作用

[英]I am stuck on multiplicativePersistence algorithm question. I don't know why this code is not working

讓函數MultiplicativePersistence(num)接受要傳遞的num參數,該參數將始終為正整數,並返回其乘法持久性,這是您必須將num中的數字相乘直到達到一位數字的次數。

例如:如果num是39,則您的程序應返回3,因為3 * 9 = 27,然后2 * 7 = 14,最后是1 * 4 = 4,然后在4處停止。

我的代碼運行良好。 但是測試用例說這是不正確的。 你們能告訴我為什么它不起作用嗎?

var userInput = prompt("Enter a num:");

var MultiplicativePersistence = function(num) {
  var arr = num.toString().split('');
  var multiplicative = 1;

  for(var i = 0; i < arr.length; i++){
    if(arr.length === 1){
      return Number(arr[0]);
    } 
    multiplicative *= Number(arr[i]);
  }

  if(multiplicative < 10){
    return multiplicative;
  }

   return MultiplicativePersistence(multiplicative);
};

console.log(MultiplicativePersistence(userInput));

輸入786時,測試用例說正確答案是4。但是我認為正確答案是0。我錯了嗎?

您得到的答案是0,因為函數執行的最后一次計算是'2 * 0',它等於0。然后您將返回此值。

看起來您應該返回必須執行的乘法次數(運行函數的次數)而不是結果。

您可以通過跟蹤函數在全局變量中運行的次數並返回它來解決此問題。

var userInput = prompt("Enter a num:");
var numberOfTimesFunctionRuns = 0;

var MultiplicativePersistence = function(num) {
  var arr = num.toString().split('');
  var multiplicative = 1;
  numberOfTimesFunctionRuns++;

  for(var i = 0; i < arr.length; i++){
    if(arr.length === 1){
      return numberOfTimesFunctionRuns;
    } 
    multiplicative *= Number(arr[i]);
  }

  if(multiplicative < 10){
    return numberOfTimesFunctionRuns;
  }

   return MultiplicativePersistence(multiplicative);
};

console.log(MultiplicativePersistence(userInput));

暫無
暫無

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

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