Free Codemp初級アルゴリズム問題-計算整数階乗
1500 ワード
原文のリンク:http://singsing.io/blog/2017/03/17/fcc-basic-factorialize-a-number/
整数の階乗を計算します。
テーマリンク中国語リンク 英語リンク レベル:初級(Baic Algorithm Scripting) 問題の解釈この を返します。たとえば、受信したのは4です。24 に戻ります。
参照リンクは特に参考になるものではありません。階乗とは何かを知っていればいいです。
ヒント はとても簡単で、1つの循環、1歩の数を乗せれば です。注意したいのは、0の階乗と1の階乗は全部1 です。初期条件を設定することが重要です。自分で先に考えてもいいです。
答えを参考にする
基本的な答え サイクルの条件はそのまま 初期値は、0に入っても1にしても良いので、結果は1であるべきです。 に入らなくてもいいです。 に再分配される。はきっと忘れないでください。そうしないと無限に循環していきます。もちろん、ここで
階段の答え うん、再帰はいいものです。 上のプロセスが分かりませんでしたら、反転文字列の説明を参考にしてください。読み終わったら、この実行過程をどう分析するか分かります。 ここの初期判断条件に注意してください。 、もし入ってきた数字が大きいなら、スタックオーバー(stack overflow、間違いなく、その世界最大のプログラマクイズプラットフォームをこの名前と呼ぶ)が発生する可能性があります。FCCにはこのような検査がないので、ここはもう展開しません。興味のある友達は「最後の再帰最適化」を検索しに行きます。ちなみに、阮一峰先生の文章は です。
整数の階乗を計算します。
テーマリンク
function
は、1つの整数をパラメータとして受信し、階乗の計算結果参照リンク
ヒント
答えを参考にする
基本的な答え
function factorialize(num) {
var result = 1;
while (num > 1) {
result *= num;
num--;
}
return result;
}
説明num > 1
を使えばいいです。何故なら、どんな数に1を掛けても変わらないからです。while
ループresult *= num
はresult = result * num
に相当します。このような書き方は計算に適用され、num--
を循環して書いても大丈夫です。階段の答え
function factorialize(num) {
//
if (num === 0) {
return 1;
}
//
return num * factorialize(num - 1)
}
説明for
に設定してはいけません。0に入ると1がもらえなくなります。