我正在嘗試在 React 中進行階乘,但我不知道發生了什么并且結果似乎不正確。
我認為當我嘗試執行 for 回圈時有問題。當輸入值為0、1或 時2,不顯示結果。
import React, {useState} from 'react';
function Calculo_Do_Fatorial() {
const [Dado, setdado] = useState('');
const [resultado, setResultado] = useState();
var fatorial = Dado;
var primeiroMultipicador = Dado - 1;
function calcular () {
if (Dado < 0) {
let cheio = 'O valor de x deve ser igual ou maior que zero';
setResultado(cheio)
}if (Dado === 0 || Dado === 1) {
let cheio1 = 1 ;
setResultado(cheio1)
}for (var i = primeiroMultipicador; i > 1; i--) {
fatorial = fatorial*i;
let cheio2 = fatorial;
setResultado(cheio2);
}
}
return (
<div className='Calculo_Do_Fatorial'>
<h1>Cálculo do Fatorial</h1><br></br>
<div className="input">
<label htmlfor="nome">Insira o número </label>
<input type="number" required="required" value={Dado} onChange={(e)=> setdado(e.target.value)}/>
</div>
<button className="calcular1" id='calcular' onClick={calcular}>Calcular</button>
<div className="result" id='resultado' >{typeof resultado === 'number' ? resultado.toFixed( 5 ).replaceAll(".", ",") : resultado}</div>
</div>
);
}
export default Calculo_Do_Fatorial
我不知道可以做些什么來修復
uj5u.com熱心網友回復:
首先,它是一個更好的(在我自己的意見)來命名useState()的
僅供參考,計算階乘的函式方法可能是:
const factorial = [...Array(dado).keys()]
.map((i) => i 1)
.reduce((factorial, i) => factorial * i, 1);
setResultado(factorial);
或者
const factorial = Array.from({ length: dado }, (_, i) => i 1)
.reduce((factorial, i) => factorial * i, 1);
setResultado(factorial);
要么創建一個 [1..n] 陣列并將其減少為階乘值。這里的好處是您不需要處理0或1作為特定情況。
uj5u.com熱心網友回復:
這是使用遞回的階乘的著名單行實作
const factorial = n => n === 0 ? 1 : n * factorial(n - 1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/334863.html
標籤:javascript 反应 功能 循环
上一篇:python函式有問題
