我正在尝试制作一个程序,该程序需要用户输入“ base”和“ exponent”,并根据需要输出“ base * base * base * base”。即2 ^ 3输出“ 2 * 2 * 2”。但是,我当前收到“ undefined * undefined * undefined * undefined ....”我的简单错误在哪里?
我猜测此功能有一个小问题:
source
这是整个代码:
display-message
答案 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)
}
}