• 締切済み

JAVAについて教えてください

JAVAに関しての質問です。 以下のプログラムを教えていただけますでしょうか? 以下の漸化式で定義される数列 an について a0=0,a1=0,a2=1, an+3=an+2+an+1+an(n≧0) コマンドライン入力に非負の整数値 n(n≧0) を入力すると、 an を計算しその結果を標準出力に出力するプログラム 【実行例1】 「コマンドライン入力」 1 「標準出力」 a(1):0 【実行例2】 「コマンドライン入力」 10 「標準出力」 a(10):81 【実行例3】 「コマンドライン入力」 30 「標準出力」 a(30):15902591 よろしくお願いします。

みんなの回答

  • _kappe_
  • ベストアンサー率68% (1581/2304)
回答No.1

解答例。わざと計算効率悪くしてあります。 import java.math.BigInteger; class Q10032419 { public static void main(String[] args) { int n = -1; if (args.length > 0) { try { n = Integer.parseInt(args[0]); } catch (NumberFormatException e) { } } if (n >= 0) { System.out.println("a(" + n + "):" + a(n)); } else { System.err.println("Error"); } } static BigInteger a(int n) { if (n < 0) { throw new IllegalArgumentException(); } switch (n) { case 0: return BigInteger.ZERO; case 1: return BigInteger.ZERO; case 2: return BigInteger.ONE; default: return a(n-1).add(a(n-2)).add(a(n-3)); } } }

関連するQ&A