ランダム検索機能があります。乱数を選択し、指定されたコンテナでその番号を検索します。十分な試行の後、再帰呼び出しを終了できるようにしたいと考えています。これまでのところ、これを行うには、カウンターとして使用する 3 番目の引数を渡す必要がありました。関数内にカウンターを作成するにはどうすればよいですか?
#include <iostream>
#include "print.h"
#include "random.h"
std::vector<int>::size_type random_search(std::vector<int> A, int x, int cnt)
{
int i = random(0, A.size() - 1);
if(A[i] == x)
return i;
else if(cnt > 500) {
std::cout << "NOT FOUND" << std::endl;
return -1;
}
else {
cnt++;
return random_search(A, x, cnt);
}
}
int main()
{
std::vector<int> B;
fill(B, 40);
print(B);
int index = random_search(B, 80, 0);
std::cout << "position = " << index << std::endl;
return 0;
}
関数の先頭で変数を宣言すると、再帰ごとにこの宣言が上書きされ、再度初期化されます。
まだ作成されていない変数が存在するかどうかを確認する方法はありますか? たとえば、次のようなコードを入れて、3 番目のパラメーターを持たないことを考えていました。
if(cnt)
cnt++;
else
int cnt = 0;