2

電卓を作って、もっと複雑なボタンをいくつか追加しています。頭が回らないのは階乗です。私はそれが何であるかを知っていますが、それを作ることができないようです。他の人の質問を見ると、コードは(とにかく私にとっては)機能しません(ところで、これは宿題の質問ではありません)。階乗のアルゴリズム(それはその言葉ですか?)の周りのコードのビットは次のとおりです。

} else if (oper.equals("shriek")) {

                resultm.setText("" + answer);
                resultl.setText("");
                resultr.setText("");
                oper = "";
                currentNuml = "";
                currentNumr = "";
            }

NB:間のギャップ

} else if (oper.equals("shriek")) {

resultm.setText("" + answer);

アルゴリズムが行くところです。おかげで、どんな助けもいただければ幸いです!

4

1 に答える 1

1

階乗を作成するための2つのバリエーションは、再帰的方法と非再帰的方法です。

階乗の基本的な論理は5! = 5*4*3*2*1

したがって、これはループ(非再帰的)を使用して簡単に実装できるはずです。ループ番号を生成するには、数値にループ番号を掛け続けるだけです。

int fact(int no){
   int result=1;
   for (int i=1;i<no;i++)result*=i;
   return result;
}

2つ目は、再帰的アルゴリズムです。これは、それ自体の内部から関数を呼び出すことを意味します。

int fact(int no){
   if(no==1)
           return 1;
   else
           return no * fact(no-1);
}

これはそのように機能します。

たとえば、fact(3)

no=3 Go to else return 3*fact(2)
    no=2 Go to else return 2* fact(1)
                 no=1 return 1
    no=2 return 2*1 => 2
no=3 Return 3*2 => 6

これがあなたの理解に役立つことを願っています

于 2012-12-23T20:38:15.390 に答える