ホームページ  >  記事  >  バックエンド開発  >  再帰関数を書くのは初めてなので、どこで間違ったのか、その対処法を教えてください。

再帰関数を書くのは初めてなので、どこで間違ったのか、その対処法を教えてください。

WBOY
WBOYオリジナル
2016-06-13 13:53:16810ブラウズ

再帰関数を書くのは初めてです。どこで間違ったのか確認してください。
function check($num) {
$sn=$num
$sql= "select * from `a_dinghuo` where ` num`= '$num ' ";
$q=mysql_query($sql);
$row=mysql_num_rows($q);
if($row==1) {
$sn =($ num+1);
check($num+1);
}
return $sn; }

データベース自体がこれを持っている場合value、次に Value +1
しかし、最終的に返されたのは元のパラメータでした...どこで間違ったのか聞いてもいいですか
どうもありがとう



-- ----解決済みの解決策--------------------データベースにその番号がないためです。

------解決策---------関数チェック($num) {
$ sn=$num;
$sql= "select * from `a_dinghuo` where `num`= '$num ' ";
$q=mysql_query($sql); $row=mysql_num_rows q);
if($row==1) {
$sn = check($num+1);//ここを変更します
}
return $sn> }
このように修正しますが、ここでは再帰の役割がわかりません。

------解決策--------

その場合、再帰は無限ループになります。外 ------解決策-----

これは確かに無限ループです。1 つ追加する必要があります。再帰的に飛び出す! 例えば2回判定されるか一定数を超えると飛び出す! function check($num){
static $array =配列(1,2,3,4,5,6,7,8,9,10);
$sn=$num
if(in_array($num, $array)){
' ' を出力します。
$sn=($num+1);
戻り値
}
check(3);
?>


出力: 3 4 5 6 7 8 9 10 4
データベース num に多数のレコードがあり、シーケンスである場合、 mysql ステートメントの実行速度が非常に高い

------解決策------

上階に無限ループはありませんか? 次へ。
$num+1....
------解決策---------
$sql= "select * from `a_dinghuo` where `num`= '$num ' ";

check($num+1); $num は型を統一する必要があります。

------解決策---------

function check($num){
static $sn;
$sql= "select * from `a_dinghuo` where `num`= '$num ' "; $q=mysql_query($sql); ; if($row==1){
$sn .= ($num+1);
}
return $sn; 🎜> }

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