再帰関数が「未定義」を返すのはなぜですか?

プラシャーントチアガ

関数が返さundefinedれ、JavaScriptの単純なバイナリ検索コードです。console.log()関数で確認したところ、実際に機能しています。以下は私のソースコードです:

var array=[1,2,3,2,4,5,6,8,7,8,9];
var searching= 3;
var starting = 0;
var ending = array.length-1;

var result = binarysearch(array,searching,starting,ending);
console.log(result); // throws undefined

function binarysearch(data,target,start,end){

var mediane = Math.round((start+end)/2);

if (data[mediane] == target) return mediane;  // console.log(mediane) gives 2 
if (data[mediane] > target) binarysearch(data,target,start,mediane-1);
if (data[mediane] < target) binarysearch(data,target,mediane+1,end);
変なパンダ

とてもシンプルです。returnコールスタックを追跡するために使用します。

var array=[1,2,3,2,4,5,6,8,7,8,9];
var searching= 3;
var starting = 0;
var ending = array.length-1;

var result = binarysearch(array,searching,starting,ending);
console.log(result); // throws undefined


function binarysearch(data,target,start,end){

var mediane = Math.round((start+end)/2);

if(data[mediane] == target) return mediane;  // console.log(mediane) gives 2 
if ( data[mediane] > target) return binarysearch(data,target,start,mediane-1);
if ( data[mediane] < target) return binarysearch(data,target,mediane+1,end);

}

説明:

再帰呼び出しを使用すると、制御は1つの関数ブランチから別の関数ブランチに移動します。明確な値を返すには、コントロール(関数コンテキスト、またはプログラムの実行が現在どこにあるかを知っているもの)を渡す必要があります。あなたは再帰的なブランチを返していませんでした。これは、実行スタックが新しい関数を作成していて、出力を取得していなかったため、それを別個のブランチとして扱っていたことを意味します。

を実行するreturnと、コンテキストは、関数を分岐して最終的な戻り値(この場合は)を使用する必要があることを認識し2ます。これがお役に立てば幸いです。:)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

この再帰関数が未定義を返すのはなぜですか?

分類Dev

再帰関数が未定義を返すのはなぜですか?

分類Dev

この再帰的なJavaScript関数が未定義を返すのはなぜですか?

分類Dev

再帰関数が戻り配列で未定義を返すのはなぜですか?

分類Dev

再帰関数がNoneを返すのはなぜですか?

分類Dev

Javascript関数が未定義を返すのはなぜですか?

分類Dev

関数が未定義を返すのはなぜですか?

分類Dev

なぜ再帰関数は何かを返すのですか?

分類Dev

JavascriptはDate()で再帰関数の未定義を返します

分類Dev

再帰関数で戻り値が未定義になるのはなぜですか?

分類Dev

この非同期関数が未定義を返すのはなぜですか?

分類Dev

この関数が未定義を返すのはなぜですか?

分類Dev

このjavascript関数が未定義を返すのはなぜですか?

分類Dev

JavaScriptマップ関数が未定義を返すのはなぜですか?

分類Dev

console.log関数が未定義を返すのはなぜですか?

分類Dev

Javascript関数が作成時に「未定義」を返すのはなぜですか?

分類Dev

関数が常に未定義を返すのはなぜですか?

分類Dev

JavaScript関数呼び出しが未定義を返すのはなぜですか?

分類Dev

JSマップ関数が未定義を返すのはなぜですか?

分類Dev

変数tabledataが未定義を返すのはなぜですか?

分類Dev

単純な再帰的Javascript関数は未定義を返します

分類Dev

乱数の再帰的なカウントで関数がNoneを返すのはなぜですか?

分類Dev

自分自身を返す関数がPython3で再帰を最大にするのはなぜですか

分類Dev

再帰関数の「無限」ループが同じ数を返すのはなぜですか

分類Dev

関数がすべての子を再帰的に返さないのはなぜですか?

分類Dev

関数を再度実行するのではなく、関数を返すのはなぜですか(再帰)?

分類Dev

Javascriptの再帰関数は未定義を返します

分類Dev

再帰的なdfs関数が間違った値を返すのはなぜですか?

分類Dev

再帰関数が予期しない結果を返すのはなぜですか?

Related 関連記事

  1. 1

    この再帰関数が未定義を返すのはなぜですか?

  2. 2

    再帰関数が未定義を返すのはなぜですか?

  3. 3

    この再帰的なJavaScript関数が未定義を返すのはなぜですか?

  4. 4

    再帰関数が戻り配列で未定義を返すのはなぜですか?

  5. 5

    再帰関数がNoneを返すのはなぜですか?

  6. 6

    Javascript関数が未定義を返すのはなぜですか?

  7. 7

    関数が未定義を返すのはなぜですか?

  8. 8

    なぜ再帰関数は何かを返すのですか?

  9. 9

    JavascriptはDate()で再帰関数の未定義を返します

  10. 10

    再帰関数で戻り値が未定義になるのはなぜですか?

  11. 11

    この非同期関数が未定義を返すのはなぜですか?

  12. 12

    この関数が未定義を返すのはなぜですか?

  13. 13

    このjavascript関数が未定義を返すのはなぜですか?

  14. 14

    JavaScriptマップ関数が未定義を返すのはなぜですか?

  15. 15

    console.log関数が未定義を返すのはなぜですか?

  16. 16

    Javascript関数が作成時に「未定義」を返すのはなぜですか?

  17. 17

    関数が常に未定義を返すのはなぜですか?

  18. 18

    JavaScript関数呼び出しが未定義を返すのはなぜですか?

  19. 19

    JSマップ関数が未定義を返すのはなぜですか?

  20. 20

    変数tabledataが未定義を返すのはなぜですか?

  21. 21

    単純な再帰的Javascript関数は未定義を返します

  22. 22

    乱数の再帰的なカウントで関数がNoneを返すのはなぜですか?

  23. 23

    自分自身を返す関数がPython3で再帰を最大にするのはなぜですか

  24. 24

    再帰関数の「無限」ループが同じ数を返すのはなぜですか

  25. 25

    関数がすべての子を再帰的に返さないのはなぜですか?

  26. 26

    関数を再度実行するのではなく、関数を返すのはなぜですか(再帰)?

  27. 27

    Javascriptの再帰関数は未定義を返します

  28. 28

    再帰的なdfs関数が間違った値を返すのはなぜですか?

  29. 29

    再帰関数が予期しない結果を返すのはなぜですか?

ホットタグ

アーカイブ