初めてコードを書きます。ただし、変数 left
の値は常に -1
です。
このようにコードを変更すると、左側の値が右側になります。
リーリー違いは何ですか? ?教えてください。
変数 left
は再帰後に異なる値を持つべきだと思いましたが、そうではありません。
最初のケースでは、left
変数は内部ラムダのクロージャ内にあります。これは、関数の観点からは変数が「グローバル」であることを意味します。ラムダは再帰的であるため、各呼び出しは以前の値を破棄します。前の値は、(再帰の)最後には -1 の値(再帰の基本ケース)を持ち、それ以降(再帰から戻るとき)は変更されません。
2 番目のケースでは、left
はローカル変数であり、呼び出しごとにスタックにプッシュまたはポップされます。
以上が変数が関数内で宣言されたときに異なる値を持つ理由を説明できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。