関数型プログラミングの値を「記憶」する
関数型プログラミングを学ぶというタスクを自分で引き受けることにしました。これまでのところ、それは爆発でした、そして、私はそれがそうであったように「光を見ました」。残念ながら、私は質問を跳ね返すことができる機能的なプログラマーを実際には知りません。Stack Exchangeの紹介。 Web /ソフトウェア開発コースを受講していますが、講師は関数型プログラミングに精通していません。彼は私がそれを使って大丈夫であり、彼が私のコードをよりよく読むことができるように彼がそれがどのように機能するかを理解するのを助けるように私に尋ねた。 これを行う最善の方法は、値を累乗するなどの単純な数学関数を示すことだと判断しました。理論的には、事前に作成された関数を使用して簡単にそれを行うことができますが、これは例の目的に反します。 とにかく、私は値を保持する方法を理解するのに少し苦労しています。これは関数型プログラミングなので、変数を変更することはできません。これを命令的にコーディングすると、次のようになります。 (以下はすべて擬似コードです) f(x,y) { int z = x; for(int i = 0, i < y; i++){ x = x * z; } return x; } 関数型プログラミングでは、確信が持てませんでした。これは私が思いついたものです: f(x,y,z){ if z == 'null', f(x,y,x); else if y > 1, f(x*z,y-1,z); else return x; } これは正解?zどちらの場合も値を保持する必要がありますが、関数プログラミングでこれを行う方法がわかりませんでした。理論的には、私がやった方法はうまくいきますが、それが「正しい」かどうかはわかりませんでした。それを行うより良い方法はありますか?