[データ構造]ループ定義、タイプ、ループ関数、繰返しおよび比較


きょうせいじゅんかん


定義

  • 定義の
  • を使用して概念自体を定義します.
  • 関数の同じ名前を呼び出し続け、同じ操作
  • を繰り返す.
  • タイプ
  • ダイレクトループ:関数ダイレクトコール
  • 間接ループ:3番目の関数呼び出し→3番目の関数呼び出し自体
  • 適用
  • は、別々に治める特性を有する問題
  • に適している.
  • 複雑な問題を小さな問題に分割する方法
  • 分問題は原題と性質が同じで、解題方法も同じ
  • である.
    ループ
  • は、終了条件が満たされるまで動作する
  • コマンド文ボーン
  • if(条件文)→終了条件:単純なケースで終了すると
  • else→ループコール:
  • を再コールし、単純なエンクロージャに分割

    循環関数の例


    例(1)-階乗2479182
    int factorial(int n) {
    	if (n <=1) return (1); //종료조건
    	else return ( n*factorial(n-1) ); //순환함수
    }
    factorial(5)
    = 5 * factorial(4)
    = 5 4 factorial(3)
    = 5 4 3 * factorial(2)
    = 5 4 3 2 factorial(1)
    = 5 4 3 2 1
    = 120
    例(2)-binsearch:所与のキー値を格納する配列a[]の位置(インデックス、mid)を検索する
    binsearch (a[], key, left, right) {
    	if (left > right) {
    		return -1; //종료조건
    	} else {
    			mid = (right+left)/2;
    			if (key = a[mid]) return mid;
    			else if (key < a[mid]) return (binsearch(a, key, left, mid-1)); //순환호출
    			else if (key > a[mid]) return (binsearch(a, key, mid+1, right)); //순환호출
    	}
    }
    💡 アレイの数がソートされている場合のみ使用可能

    ループvs繰返し

  • サイクル
    繰り返し呼び出し
  • ループ関数
  • 大問題を小問題
  • にどのように分解するか
  • サイクル問題の自然な方法
  • 関数呼び出しオーバーヘッド大
  • 繰り返し
  • for nawhileを使用して
  • を繰り返す
  • プログラムの実行速度は比較的速い
  • サイクルの問題では、プログラム
  • の作成が困難になる可能性があります.