簡単な問題。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版
- プログラミング言語の理論を学には … プログラミング言語の基礎概念 (ライブラリ情報学コア・テキスト)