nの階乗を求めるプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
あいうえお

nの階乗を求めるプログラム

#1

投稿記事 by あいうえお » 2年前

nの階乗を求めるプログラムです。
for文の初期値を2にしてはいけない理由を知りたいです。



#include<stdio.h>

int kai(int n) {
int ans = 1;
for (int i = 2;i <= n;i++) {
ans = ans * i;
}
return ans;
}


void main(void)
{
int n, ans;
scanf("%d", & n);
printf("%d", \n);
ans = kai(n);

}

box
記事: 2002
登録日時: 13年前

Re: nの階乗を求めるプログラム

#2

投稿記事 by box » 2年前

元のコードはいろいろグダグダだったので書き換えました。
少なくとも下記のコードではfor文の初期値は1でも2でもOKです。

コード:

#include<stdio.h>

int factorial(int n)
{
    int ans = 1, i;

    for (i = 1; i <= n; i++) {
        ans *= i;
    }
    return ans;
}


int main(void)
{
    int n;

    printf("n = ");
    scanf("%d", &n);
    printf("factorial of %d is %d\n", n, factorial(n));
    return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

box
記事: 2002
登録日時: 13年前

Re: nの階乗を求めるプログラム

#3

投稿記事 by box » 2年前

少なくとも下記のコードではfor文の初期値は1でも2でもOKです。
もちろん、int型でオーバーフローしない範囲のnにおいては、ということです。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: nの階乗を求めるプログラム

#4

投稿記事 by みけCAT » 2年前

あいうえお さんが書きました:
2年前
for文の初期値を2にしてはいけない理由を知りたいです。
学校の先生の教えに反し、試験の時にそうすると不正解とされるから…とかでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
usao
記事: 1887
登録日時: 11年前

Re: nの階乗を求めるプログラム

#5

投稿記事 by usao » 2年前

> for文の初期値を2にしてはいけない理由

「2にしてはいけない」という話がそもそもどこからどうやって湧いてきたのか?
唐突に「2にしてはいけない」ということが決定事項のような話をされても,読み手には意味不明だと思わない?

どう見ても2でOKと見える話に対して「2だとダメな理由は?」とか言われても,
背景事情が不明な第三者からは「とりあえずその話が湧いてきた箇所に問えば…?」としか言えない.


もしもご自身の中に「2でOKだろ常考…」的な考えや確信がある状態で,そのことに対する{共感,賛同}が欲しい的な話なのであれば,
「コレ1じゃなくて2でもいいですよね?」とか「むしろ1より2の方が良いですよね?」とか,そういう形の話をすべきであろう.

返信

“C言語何でも質問掲示板” へ戻る