ホームページ バックエンド開発 PHPチュートリアル PHP 再帰関数の return が目的の値を正しく返せない場合がある

PHP 再帰関数の return が目的の値を正しく返せない場合がある

Mar 15, 2017 pm 03:42 PM
再帰関数

PHP の再帰関数で return を使用すると、目的の値が正しく返されない状況が発生します。その理由を理解していないと、エラーを見つけるのが難しくなります。次の具体的な例で説明してみましょう。例:

function test($i){
    $i-=4;
    if($i<3){
        return $i;
    }else{
        test($i);
    }
}
echo test(30);
ログイン後にコピー

このコードは、実行しなければ問題がないように見えますが、時間内に実行して問題が見つかったとしても、おそらく問題はないと思われます。問題がどこにあるのかわからないかもしれませんが、実際には、この関数の他の部分に問題があります。このコードの実行結果には戻り値はありません。

したがって、条件 $i<3 が満たされて return $i が返されたとしても、関数全体は値を返しません。したがって、上記の PHP 再帰関数は次のように変更できます。

function test($i){
    $i-=4;
    if($i<3){
        return $i;
    }else{
        return test($i);//增加return,让函数返回值
    }
}
echo test(30);
ログイン後にコピー

関連記事
PHP 再帰関数を効果的に使用するには? php 再帰関数の典型的な例
php 再帰関数 PHP の配列関連関数の概要
PHP 再帰関数の戻り値の使用方法の簡単な分析

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C++ 再帰関数の最適化手法にはどのようなものがありますか? C++ 再帰関数の最適化手法にはどのようなものがありますか? Apr 17, 2024 pm 12:24 PM

再帰関数のパフォーマンスを最適化するには、次の手法を使用できます。 末尾再帰を使用する: 再帰呼び出しを関数の最後に配置して、再帰オーバーヘッドを回避します。メモ化: 計算の繰り返しを避けるために、計算結果を保存します。分割統治法: 問題を分解し、サブ問題を再帰的に解決して効率を向上させます。

Python コードでの過剰な関数のネスト エラーを解決するにはどうすればよいですか? Python コードでの過剰な関数のネスト エラーを解決するにはどうすればよいですか? Jun 25, 2023 pm 12:35 PM

Python は非常に強力なプログラミング言語であり、多くのプログラマーが主要なプログラミング言語として Python を選択しています。ただし、コード内で関数のネストが多すぎると、プログラムの保守と理解が困難になる可能性があります。この記事では、Python コードでの過剰な関数のネスト エラーを解決する方法を説明します。関数のネストの簡単な説明 関数のネストとは、関数の本体内で別の関数を定義するプロセスを指します。関数をネストすると、プログラムの構造がより明確になり、コードが読みやすく、保守しやすくなります。ただし、ネストされた関数が多すぎると、コード構造が過度に複雑になる可能性があります。

検索アルゴリズムに C++ 再帰関数を適用しますか? 検索アルゴリズムに C++ 再帰関数を適用しますか? Apr 17, 2024 pm 04:30 PM

再帰関数は、ツリー状のデータ構造を探索するための検索アルゴリズムで使用されます。深さ優先検索ではスタックを使用してノードを探索しますが、幅優先検索ではキューを使用してレイヤーごとに検索します。ファイルの検索などの実際のアプリケーションでは、再帰関数を使用して、指定されたディレクトリ内の特定のファイルを検索できます。

C++ の再帰関数の終了条件は何ですか? C++ の再帰関数の終了条件は何ですか? Apr 17, 2024 am 11:33 AM

C++ 再帰関数の終了条件は次のとおりです。 ベースライン条件: 関数が結果を直接返すことができる状態に達したかどうかを確認し、通常は特定の条件またはパラメーター値がしきい値を満たすかどうかを判断します。再帰終了条件: ベースライン条件の代替または追加で、再帰の深さを追跡するか最大再帰の深さ制限を設定することによって、一定回数の再帰呼び出し後に関数が停止するようにします。

ソートアルゴリズムにおけるC++の再帰関数の応用? ソートアルゴリズムにおけるC++の再帰関数の応用? Apr 17, 2024 am 11:06 AM

C++ のソート アルゴリズムにおける再帰関数の適用 再帰関数によって実装された挿入ソートおよびマージ ソート アルゴリズムは、複雑な問題をより小さなサブ問題に分解し、再帰呼び出しを通じてそれらを効率的に解決できます。挿入ソート: 要素を 1 つずつ挿入して配列をソートします。マージソート: 分割統治し、配列を分割してサブ配列を再帰的にソートし、最後にソートされたサブ配列をマージします。

C++ 再帰関数の末尾再帰最適化戦略を実装するにはどうすればよいですか? C++ 再帰関数の末尾再帰最適化戦略を実装するにはどうすればよいですか? Apr 17, 2024 pm 02:42 PM

末尾再帰最適化戦略は、末尾再帰呼び出しをループに変換することで関数呼び出しスタックの深さを効果的に削減し、スタック オーバーフローを防ぎます。最適化戦略には以下が含まれます。 末尾再帰の検出: 関数内に末尾再帰呼び出しがあるかどうかを確認します。関数をループに変換する: 末尾再帰呼び出しの代わりにループを使用し、スタックを維持して中間状態を保存します。

Go言語で再帰関数を使用して階乗を実装するにはどうすればよいですか? Go言語で再帰関数を使用して階乗を実装するにはどうすればよいですか? Jul 31, 2023 pm 08:31 PM

Go言語で再帰関数を使用して階乗を実装するにはどうすればよいですか?階乗は、負でない整数 n に、それより小さい 1 までのすべての正の整数を乗算する数学の一般的な計算です。たとえば、5 の階乗は 5! と表現でき、54321=120 と計算されます。コンピューター プログラミングでは、階乗計算を実装するために再帰関数をよく使用します。まず、再帰関数の概念を理解する必要があります。再帰関数とは、関数の定義内で関数自体を呼び出すプロセスを指します。問題を解決するとき、再帰関数は継続的に実行されます。

ディレクトリ内のすべてのファイルとサブディレクトリを一覧表示する C プログラム ディレクトリ内のすべてのファイルとサブディレクトリを一覧表示する C プログラム Aug 25, 2023 pm 10:09 PM

ここにディレクトリがあります。私たちのタスクは、ディレクトリ内のすべてのファイルとサブディレクトリを一覧表示する C プログラムを作成することです。ディレクトリは、一連のファイルが保存される場所/領域/場所です。サブディレクトリはルート ディレクトリ内のディレクトリであり、ルート ディレクトリには別のサブディレクトリを持つことができます。 C プログラミング言語では、ディレクトリ内のすべてのファイルとサブディレクトリを簡単に一覧表示できます。次のプログラムは、ディレクトリ内のすべてのファイルとサブディレクトリを一覧表示する方法を示しています。 // ディレクトリ内のすべてのファイルとサブディレクトリを一覧表示する C プログラムの例 ライブ デモンストレーション #include<stdio.h>#include<dirent.h>intmain(void){ &am

See all articles