組み合わせを計算するJavaScriptを作ったケロ [ひとこと言わねば]
組み合わせを計算するJavaScriptを作ったにゃ。
そして、Bloggerの方にアップしておいたケロ。
そして、Bloggerの方にアップしておいたケロ。
これがその計算結果
n=30、r=15とすると、
断っておきますが、上のは画像なので、クリックしても計算はしてくれない。
上記urlにアクセスし、nとrに値を入れて、計算ボタンをクリックすると、を計算してくれる。ただし、エラーチェック機能は含んでいないので、n、rに変な値を入れないように。
上記urlにアクセスし、nとrに値を入れて、計算ボタンをクリックすると、を計算してくれる。ただし、エラーチェック機能は含んでいないので、n、rに変な値を入れないように。
では、例によって、ネムネコ自尊ソングを♪
さらに、この曲を♪
(画像元:YouTubeの上の動画)
C言語ならば5、6行で計算するプログラムを作ることができる。
次の関係
を使って、再帰処理を用いての値を求めることもできる。
C言語なならば、たとえば、次のようになる。
#include <stdio.h>
// 再帰処理で計算
int Combi(int n, int r) {
if(r==0 || r==n) {
return 1;
} else {
return Combi(n-1,r)+Combi(n-1,r-1);
}
}
main() {
int n,r;
for (n=0; n<=9; n++) {
for (r=0; r <=n; r++) {
printf("%dC%d=%d ", n,r,Combi(n,r));
}
printf("\n");
}
}
// 再帰処理で計算
int Combi(int n, int r) {
if(r==0 || r==n) {
return 1;
} else {
return Combi(n-1,r)+Combi(n-1,r-1);
}
}
main() {
int n,r;
for (n=0; n<=9; n++) {
for (r=0; r <=n; r++) {
printf("%dC%d=%d ", n,r,Combi(n,r));
}
printf("\n");
}
}
これは、パスカルの三角形を用いて、の値を求めるのと同じなのですが、
他に手段がない場合や再帰処理を用いないとプログラムが冗漫になる場合などはしょうがないけれど、
プログラムが自分自身を呼ぶ、このような再帰プログラムは作らないほうがいい。
他に手段がない場合や再帰処理を用いないとプログラムが冗漫になる場合などはしょうがないけれど、
プログラムが自分自身を呼ぶ、このような再帰プログラムは作らないほうがいい。
return Combi(n-1,r)+Combi(n-1,r-1);
ここで、Combiという関数が自分自身を呼び出している!!
パスカルの三角形
何故、再帰処理を使ったプログラムはできるだけ書かないほうがいいのかについては、きっと、
ddt³さんが解説してくださるに違いない!!
ddt³さんが解説してくださるに違いない!!
問題 次の関係
を利用し、n!を求めるプログラムを作りなさい。
できたら、再帰処理を利用したプログラムを作れ。
(ヒント)
とおくと、
したがって、
f(n) {
if(n==0) {
return 1;
else {
return n*f(n-1);
}
}
コメント 0