0

私の C++ クラスに次の再帰関数を書きました。

bool contains(int arr[], int n, int val){
  if(n == 0) return false;          // Escape clause
  if(arr[0] == val) return true;  // Second escape clause
  return contains(arr+1, n-1, val);
}

私の教授は、C/C++/Assembler がこの種の配列トラバーサルをサポートする唯一の主流言語であると言いました。ポインターアドレスを変更することで、この種の検索を可能にする言語は他にあるでしょうか?

4

1 に答える 1

2

配列の数値インデックスをサポートするすべての言語は、この一般的なアルゴリズムで機能します。ポインタ操作とは関係ありません。

ポインター操作は通常、C の文字列ベースのアルゴリズムで利用されます。たとえば、次のように実装できstrlenます。

size_t strlen(char* pValue) {
  char* pStart = pValue;
  while (*pValue != '\0') {
    pValue++;
  }
  return pValue - pStart;
}

char[]このコードは、またはchar*入力でも同様に機能します。このタイプのポインターの操作は、実際には、ポインターを公開し、配列をそのように公開する言語に限定されています。

ただし、これは C / C++ / アセンブラーに限定されません。それはまた、例えばC#で行うことができます

于 2012-04-23T18:47:15.813 に答える