• 締切済み

C言語の質問

「n の階乗 n! の計算を再帰式で表現したCプログラムを作成し、n=10, n=11, n=12 の出力結果を書きなさい。 プログラムではnの値は1から12までとせよ。 入出力については問わない。」です。お願いします。

noname#84110
noname#84110

みんなの回答

回答No.6

今日の授業の課題ですね、わかります。 koblogは見ましたか?ググレばでてきますよ。 がんばってくださいね^^

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.5

> n の階乗 n! の計算を再帰式で表現したCプログラムを作成し 再帰式とは? 再帰関数なら簡単ですが、C言語で再帰式というのは何を表すのかよくわかりません。 > 入出力については問わない。 とのことですが、 > 出力結果を書きなさい。 とあります。 どういうことなのか補足してください。

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.4

タイトルと本文の内容が一致していません。 タイトルには「質問」とありますが、本文で書いている内容は 「依頼」や「要求」に属しています。 質問したいのですか? 依頼したいのですか?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

n! の再帰的な定義を書いてください. すべてはそこから.

  • chie65535
  • ベストアンサー率43% (8523/19372)
回答No.2

#include <stdio.h> int kaijo(int n) { return n==1?1:kaijo(n-1)*n; } int main(void) { int n; for(n=0;n<1||n>12;) { printf("\nn(1-12):"); scanf("%d",&n); } printf("%d!=%d\n",n,kaijo(n)); return 0; } このプログラムが何やってるか知りたい場合は、隣の席のクラスメートに聞いて下さい。 隣の席のクラスメートにも判らない場合は、隣の隣の席のクラスメートに聞いてもらって下さい。 隣の隣の席のクラスメートにも判らない場合は、隣の隣の隣の席のクラスメートに聞いてもらって下さい。 隣の隣の隣の席のクラスメートにも判らない場合は、隣の隣の隣の隣の席のクラスメートに聞いてもらって下さい。 隣の隣の隣の隣の席のクラスメートにも判らない場合は、隣の隣の隣の隣の隣の席のクラスメートに聞いてもらって下さい。 巡り巡って自分の所に戻ってきたら「判らない」って答えて下さい。 このように「判らないなら、更に隣の人に聞いてもらう。判った時点で順に答えを伝言してもらう」と言うのが「再帰式」です。

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.1

で、質問なさりたいことはなんなのでしょうか?

関連するQ&A

  • C言語について質問です。

    C言語について質問です。    問題:繰り返し命令と階乗の計算 カウンタ用変数nの値を1から10まで1ずつ変化させて、その値を階乗用変数Kiに順次、掛け算していき、10の階乗を求めよ。 ki=1×2×3×4×5×6・・・・・×9×10 <==10! また、1/n!は小数点以下10桁まで求めよ。 実行結果は    n                 n!             1/n!    1                 1             1、0000000000    2                 2             0、5000000000    3                 6             0、1666666667    4                24             0、0416666667    5               120             0、0083333333    6               720             0、0013888889    7              5040             0、0001984127    8             40320             0、0000248016    9            362880             0、0000027557   10           3628800             0、0000002756                            続行するには何かキーを押してください、、、、、、 上のように実行結果が出るようにプログラミングしたいのですがわからないので 分かる方よろしくお願いします。 ちなみに今まで習ってきたのは、if文、switch文、do文、while文、for文なんですがこのプログラミングは、for文でおねがいします。 長文失礼しました。

  • プログラムについて(C言語)

    #include<stdio.h> int main() { int i,n,total; for(;;){ /* 無限ループ*/ printf("整数n?"); /* nの値の表示 */ scanf("%d",&n); /* ifとbreakを使った終了判定 */ if(n<0)break; total=1; for(i=1;i<=n;i++){ printf("i=%d ",i); total*=i; /* total←total*i(階乗の計算) */ } printf("total=%d\n",total); /* totalの値(結果)の表示 */ } printf("Thanks\n"); /* 終了メッセージの表示 */ return(0); } これは階乗を求めるプログラムなのですが、i++ではなくi--をつかって求める場合 どのように変更すればよいでしょうか? for(i=1;i<=n;i++){ あたりをいろいろ弄ってみたのですが、求めてる結果は得られませんでした

  • C言語 再帰呼びだし

    C言語 再帰呼びだし 問題が解けません。もしよろしければご指導お願いします。 フィボナッチ数を求めるプログラミングを作成せよ。 非負の整数nに対するフィボナッチ数Fnは以下のように再帰的に定義される。 Fn=0 (n=0の時) Fn=1 (n=1の時) Fn=F(n-1)+F(n-2) (n>1の時) ・関数int fibo(int n)を作成し、関数mainで、複数のnに対して関数fiboを呼びだし、その結果を表示せよ。 ・関数fiboは、再帰的にfiboを呼びだすようにせよ。 よろしくお願いします。

  • c言語プログラミングの質問です。

    整数NとN個の整数を受け取り,受け取ったN個の整数のうち最大のものを表示するプログラムを記述せよ. ただし,N>0とする. 入出力例 入力 ⇒ 出力 3 2 1 8 ⇒ 8 5 13 14 11 12 15 ⇒ 15 2 -1 -2 ⇒ -1 という問題です。「3つの数の中から~」という場合はそれぞれa,b,cとおいて比較できるのですが、この問題のような場合はどうすればいいですか。

  • 階乗のプログラム

    c言語初心者です。 13までの階乗の値を計算するプログラムを下のように書いたのですが、 #include <stdio.h> main() { int N, fact; fact=1; for(N=1; N<=13; ++N){ fact=fact*N; printf("%d!=%d\n",N, fact); } } このプログラムを実行してみると、12!までは正しい値が出力されるのですが、13!の値が1932053504と出力され、計算機の値と違います。 どこが間違っているのでしょうか。どなたかご教授お願いします。

  • c言語について

    C言語で、二つの整数値を読み込んで、前者の値が後者の何%であるかを実数で表示するプログラムを作成しようとして以下のコードを書きました。 #include <stdio.h> int main(void) { int n1, n2 ; puts("二つの整数を入力してください。") ; printf("整数A : \n") ; scanf("%d" , &n1) ; printf("整数B : \n") ; scanf("%d" , &n2) ; printf("Aの値はBの%f%%です。\n" , (double)(n1 / n2) * 100) ; return 0 ; } 上記コードを実行すると、0.000000%のような結果になります。 そこで、最後のキャスト演算子を使用した後の式で(n1 / n2) * 100がまずいのかなと考え、n1 / n2 * 100にしたら上手くいきました。 なぜ、上記コードだと上手くいかないんでしょうか?

  • フィボナッチ数列 プログラミング C言語

    「フィボナッチ数を次の手順で求めるプログラムfib2.cを作成。 再帰関数 int fib(int n)を定義し,再帰呼出しによりfib(n)の値を求める。n=30までのフィボナッチ数を求めて表示せよ。 またどのnの値まで求めるか?」という問題です。 で下記のように作りましたが再帰関数をつかわなかったので再提出になってしまいました。 再帰関数はどうやって使うのでしょうか。 今回の場合はどの部分が再帰関数になるのでしょうか? おねがいします。 #include<stdio.h> main() { int fib[100], i; fib[0] = 0; fib[1] = 1; printf("F0=0\nF1=1\n"); for(i=2; i<=30; i++) { fib[i] = fib[i-1]+fib[i-2]; printf("F%d=%d\n",i, fib[i]); } }

  • nCrの値が表示されない

    C言語でnCrの値を求めるプログラムをnCr=n!/(r!*(n-r)!)を元に、再帰を用いて階乗を求める関数を用いて作成したのですが、nとrがn=40,r=11等の大きな値になるとnCrの値をunsigned long intで定義していても値が表示されませんでした。桁あふれではないんですが何故でしょうか?PCの構造にそこまで詳しくないので、詳しい理由を教えてください。

  • C言語教えてください。

    (1)二次方程式y=a*x*x+b*x+cについて、a=1.0,b=2.0,c=3.0として、x=1.1,2.2,3.3,4.4のときのyをもとめる計算を行い、式と係数値とxと対応するyの値を表示するプログラムを作成せよ。 (2)xを与えて、xの2乗、3乗を計算し、xと対応する結果を表示するプログラムを作成せよ。なお、x=3,5,7,9とする。

  • 超困っているので助けて下さい

    階乗の計算 [問題]正の整数 n を入力し,次の式の値を計算し,出力するプログラムを書け.なお,計算は double で行え. (1 + 9.0) * (2 + 9.0) * (3 + 9.0) * ・・・ * (n + 9.0) 上記の問題をdouble形式で説いてくださいお願いします。 CとC++でお願いします。 ついでに言うとintmain()で解いてみてください。

専門家に質問してみよう