C言語って… (275レス)
C言語って… http://mevius.5ch.net/test/read.cgi/gamedev/1028273462/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
85: 名前は開発中のものです。 [sage] 02/08/04 18:02 ID:??? どうしてx^nと謳っておきながら コードとドキュメントはx^yなの? 記号の不統一性は混乱する元です。 また、場合わけが気持ち悪いですね。 むしろループや再帰を効率的に使ってもっと簡潔に書くべきでは? ループを使った場合をささっと書くと、 int res=1; for(int i=0;i<y;++i){ res*=x; } て感じ。 ちなみに0^0=1は定義だけど、いいね? http://mevius.5ch.net/test/read.cgi/gamedev/1028273462/85
86: 85 [sage] 02/08/04 18:06 ID:??? あー、ごめん、ちょっと補足。 85のコードはx,yに値が代入された後、場合わけを含めて計算する。 0を入力されても止める必要は無いし、1の場合の場合わけも不要。 考慮していないのは乗数<0の場合。 0で計算される。 http://mevius.5ch.net/test/read.cgi/gamedev/1028273462/86
88: 85 [sage] 02/08/04 19:03 ID:??? >>87 えへっ、(省略されました・・全てを読むにはここを押してください)を読まなかったの v 私めんどうくさがりだもん。 …ごめんね。 http://mevius.5ch.net/test/read.cgi/gamedev/1028273462/88
90: 85 [sage] 02/08/04 19:22 ID:??? そだね。 87さんのだと最終的な結果がx^(2^y)になるかな? swapと一緒でtmpが一個いるよ。 tmp無しで書こうと思ったら、church数みたいに int func(int xx,int yy){return (n==0)?1:xx*func(yy-1);} とかあらかじめ関数を作っておいて、 printf("%d ^ %d = %d\n",x,y,func(y)); でOK。 しかし再帰でバグ出すと最悪数時間が消えるので、 他にいい方法があったり、あるいは急ぐときにはあんまりお勧めしないです。 http://mevius.5ch.net/test/read.cgi/gamedev/1028273462/90
91: 85 [sage] 02/08/04 19:23 ID:??? ああっ、やってしまった…。 訂正です。 int func(int xx,int yy){return (yy==0)?1:(xx*func(xx,yy-1));} これならうまくいくはず…。たぶん…。 http://mevius.5ch.net/test/read.cgi/gamedev/1028273462/91
92: 85 [sage] 02/08/04 19:34 ID:??? やっぱりダメだぁ…。 訂正が面倒だから今回はちゃんとコンパイラ通した。 //再帰を使った階乗計算 #include<stdlib.h> #include<stdio.h> int func(int xx,int yy){return (yy==0)?1:(xx*func(xx,yy-1));} void main(void){ int x,y; printf("x?");scanf("%d", &x);//xを入力 printf("y?");scanf("%d", &y);//yを入力 printf("%d ^ %d = %d\n",x,y,func(x,y));//計算&結果表示 } http://mevius.5ch.net/test/read.cgi/gamedev/1028273462/92
96: 84 [sage] 02/08/04 22:34 ID:??? >>85 さんご意見ありがとう! http://mevius.5ch.net/test/read.cgi/gamedev/1028273462/96
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.013s