簡単な問題。1からnまで合計を計算するプログラムを作成。
sum0は普通にfor文を使って計算。sum1は公式を使って計算。nかn+1のどちらかが2の倍数になるので必ず割りきれるのですが、(n+1)*n/2とするとdouble型になるのでDartEditorが警告を出します。ということで、double.toInt()を呼び出しています。sum2は再帰的呼び出し。
int sum0(int n) {
int sum = 0;
for (int i=1 ; i<=n ; i++) {
sum += i;
}
return sum;
}
int sum1(int n) {
return ((1+n)*n/2).toInt(); // doubleになるのでtoInt()
}
int sum2(int n) {
if (n == 0) {
return 0;
} else {
return sum2(n-1) + n;
}
}
void main() {
print("sum0(10):" + sum0(10));
print("sum1(10):" + sum1(10));
print("sum2(10):" + sum2(10));
}
- クラスベースのオブジェクト指向プログラミング言語の基礎を学ぶには … 改訂版 基礎Java(CD-ROM付) (IMPRESS KISO SERIES)
- クラスベースのオブジェクト指向プログラミング言語を学ぶには … プログラミング言語Java (The Java Series)
- 関数型プログラミング言語を学ぶには … Scalaスケーラブルプログラミング第2版
- プログラミング言語の理論を学には … プログラミング言語の基礎概念 (ライブラリ情報学コア・テキスト)