C言語って… (275レス)
上下前次1-新
抽出解除 レス栞
85(6): 02/08/04 18:02 ID:??? AAS
どうしてx^nと謳っておきながら
コードとドキュメントはx^yなの?
記号の不統一性は混乱する元です。
また、場合わけが気持ち悪いですね。
むしろループや再帰を効率的に使ってもっと簡潔に書くべきでは?
ループを使った場合をささっと書くと、
int res=1;
省5
86: 85 02/08/04 18:06 ID:??? AAS
あー、ごめん、ちょっと補足。
85のコードはx,yに値が代入された後、場合わけを含めて計算する。
0を入力されても止める必要は無いし、1の場合の場合わけも不要。
考慮していないのは乗数<0の場合。
0で計算される。
88: 85 02/08/04 19:03 ID:??? AAS
>>87
えへっ、(省略されました・・全てを読むにはここを押してください)を読まなかったの v
私めんどうくさがりだもん。
…ごめんね。
90: 85 02/08/04 19:22 ID:??? AAS
そだね。
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));
省3
91: 85 02/08/04 19:23 ID:??? AAS
ああっ、やってしまった…。
訂正です。
int func(int xx,int yy){return (yy==0)?1:(xx*func(xx,yy-1));}
これならうまくいくはず…。たぶん…。
92: 85 02/08/04 19:34 ID:??? AAS
やっぱりダメだぁ…。
訂正が面倒だから今回はちゃんとコンパイラ通した。
//再帰を使った階乗計算
#include<stdlib.h>
#include<stdio.h>
int func(int xx,int yy){return (yy==0)?1:(xx*func(xx,yy-1));}
void main(void){
省5
96: 84 02/08/04 22:34 ID:??? AAS
>>85 さんご意見ありがとう!
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.816s*