こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

javaのfor文

nの値の和を求めるのはこれ以外に書き方はありますか?
import java.util.*;

class SampleGoo{
public static void main(String args[]){
Scanner std = new Scanner(System.in);
System.out.print("整数値:");int n = std.nextInt();

int ans = 0;
for (int i = 1;i <= n;i++){
ans = ans + i;
}
System.out.println(Integer.toString(ans));
}
}

投稿日時 - 2008-01-09 12:14:09

QNo.3663606

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

>nの値の和を求めるのはこれ以外に書き方はありますか?
綺麗、汚いを抜きにロジックを考えようと思えば、いくらでも考えられますが。。。

投稿日時 - 2008-01-11 19:33:16

ANo.2

修正します。

public static int sum2(int n){
 if(n > 0)
  return sum2(n - 1) + n;
 else
  return 0;
}

投稿日時 - 2008-01-09 14:45:08

ANo.1

入力の方法ということですか?
→コマンド引数から入力する方法があります。
和の計算の方法ということですか?
→sum0 ~ sum3 は全て同じ結果を返します。

public class Sum {
 public static int sum0(int n){
  int sum = 0;
  for(int i = 1; i <= n; i++)
   sum += i;
  return sum;
 }
 
 public static int sum1(int n){
  int sum = 0;
  while(n > 0)
   sum += n--;
  return sum;
 }
 
 public static int sum2(int n){
  if(n > 0)
   return sum3(n - 1) + n;
  else
   return 0;
 }
 
 public static int sum3(int n){
  int sum =
   n % 2 == 0 ?
   n / 2 * (1 + n):
   n / 2 * n + n;
  return sum;
 }
 
 public static void main(String[] args) {
  int n = Integer.valueOf(args[0]);
  System.out.println("ans = " + sum0(n));
  System.out.println("ans = " + sum1(n));
  System.out.println("ans = " + sum2(n));
  System.out.println("ans = " + sum3(n));
 }
}

投稿日時 - 2008-01-09 14:34:38

あなたにオススメの質問