配列の中身をコンソールに逆順に出力する例です。
左はC++、右はVBAの例です。
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <iostream> int main() { int aaa[5]{ 1,2,3,4,5 }; for (int i = 4; i > -1; --i) { std::cout << aaa[i] << std::endl; } return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Option Explicit Sub test() Dim aaa(4) As Long Dim i As Long For i = 0 To 4 aaa(i) = i Next i For i = 4 To 0 Step -1 Debug.Print aaa(i) Next i End Sub |
再起関数を使って逆順に出力する例です。
再起関数は関数の中で自分自身を呼び、変数を持ち越して終了条件まで繰り返して繰り返した結果を溜めて、処理が終わって戻って来たときに一気に出力するイメージです。
慣れないと難しいです。
再起ループが終わるまでメモリを使っていくので重い処理を大量に行うのはよろしくないです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> int f(int i) { int a[]{ 0,1,2,3,4 }; int n = 0; if (i == 5) return 0; n = i; //再起で持ち越す変数を渡して置く f(++i); std::cout << a[n] << std::endl; return 0; } int main() { int i = 0; f(i); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Sub f() Dim i As Long Call 再起(i) End Sub Sub 再起(i As Long) Dim aaa(5) As Long Dim j As Long For j = 0 To 4 aaa(j) = j Next j If i = 5 Then Exit Sub End If j = i i = i + 1 Call 再起(i) Debug.Print aaa(j) End Sub |
コメント