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*