• ベストアンサー

階乗の式

「5」と入力すると、「1*2*3*4*5=120」(階乗)と表示されるプログラムを組みたいのですが、 例で言うと120という計算結果は出せるのですが式の部分が出せません。 forまたはwhileによって作るんですが誰か式をうまく出すプログラムが分かる人いらっしゃいませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.3

import java.io.*; public class kaijyou { public static void main(String[] args){ BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("数字を入力=> "); int x = Integer.parseInt(in.readLine()); int y=1; System.out.print("結果は "); for(int i=1;i<x;i++){ System.out.print(i+"*"); y=i*y; } System.out.print(x+"=" +y*x ); } }

I-ryu
質問者

お礼

今やってるタイプとおなじ形です! ありがとうございました。

その他の回答 (2)

回答No.2

セルA1に計算対象値を入力し、セルB1に計算結果を表示するものとすると、  エクセルの関数式の場合   セルB1に[=IF(A1>0,FACT(A1),"")]と記述する。  エクセルのマクロの場合   Dim A,B,C A=RANGE("A1").VALUE IF A>0 THEN B=1 FOR C=1 TO A B=B*C NEXT C END IF RANGE("B1")=B これでいかがでしょうか

  • luckymako
  • ベストアンサー率55% (29/52)
回答No.1

これでどうですか? public StringBuffer func(int a){ if(a > 0){ StringBuffer f = new StringBuffer("1"); long ans = 1; int tmp = 1; while(++tmp <= a){ f.append("*").append(tmp); ans *= tmp; } f.append("=").append(ans); return f; } return null; }

関連するQ&A