Javascript基本递归输出返回未定义的答案

时间:2019-09-01 17:45:38

标签: javascript html

我正在尝试制作一个程序,该程序需要用户输入“ base”和“ exponent”,并根据需要输出“ base * base * base * base”。即2 ^ 3输出“ 2 * 2 * 2”。但是,我当前收到“ undefined * undefined * undefined * undefined ....”我的简单错误在哪里?

我猜测此功能有一个小问题:

source

这是整个代码:

display-message

3 个答案:

答案 0 :(得分:0)

您可以定义这样的显示功能

function display (base, expo) {
    return expo === 1 ? base.toString() : base.toString() + "*" + display(base, expo - 1);
}

并像这样使用它

document.getElementById("outputfield").value = display(base, expo);

答案 1 :(得分:0)

当您第一次调用函数display时,您需要将输入值作为参数传递,那么我更喜欢使用Preview函数来获取输入值,在其中,您可以像下面这样调用递归函数:

var base = document.getElementById("base");
var expo = document.getElementById("expo");
var output = document.getElementById("outputfield");

function resolve() {
  output.innerHTML = ""
  output.innerHTML = display(base.value, expo.value)
}

function display(base, expo) {
  return parseInt(expo) === 1 ? base : `${base}*${display(base, --expo)}`
}
<form action="#">
    <p><label>Please enter a Base Number: 
        <input id ="base" type="number"><br>
        and an Exponent:
        <input id ="expo" type ="number"><br>
        <button id="calculate" type="button" onclick= "resolve()">Calculate</button>
        </label>
    </p>
    <p>
        <output id="outputfield" type="text"></output>
    </p>
</form>

答案 2 :(得分:0)

在声明该函数内部的'base'和'input'变量对我有用的情况下,您需要在每个函数调用上重新分配'expo'输入字段的当前值。

 function display(){

      var base = document.getElementById("base").value;
      var expo = document.getElementById("expo").value;

      if (expo == 1){
          document.getElementById("outputfield").value = document.getElementById("outputfield").value + base;
      }   
      else{ 
          document.getElementById("outputfield").value = document.getElementById("outputfield").value + base + "*";
          document.getElementById("expo").value = --expo;
          display(base, --expo)
      }
  }