Рекурсивная функция

Печать RSS
314

Автор
Землянин
0
Шалом ребзя !
Подскажите на какой строке я допустил ошибку в этом коде ? По идее все ок и в конце функция должна возвращать строку "Текст" и вывести ее, однако этого не происходит...
function one($a) {
    if ($a > 0) {
        echo '<h6>'.$a.'</h6>';
        one($a-1); }
     else {
         return '<h5>Текст</h5>'; }
   }
   echo one(2);
Изменил: Суицидник (31.10.2016 / 15:29)

Господин ПЖ
0
Аллах акбар!
Насколько я знаю функция не может одновременно и вернуть и вывести результат
Может я не прав, в доках к сожалению не смог найти

<?php
function one($a)
{
    if ($a > 0) {
        echo '<h6>'.$a.'</h6>';
        one($a-1);
    } else {
        echo '<h5>Текст</h5>';
    }
}

echo one(5);
А

Оранжевые штаны
0
нет не должна она возвращать строку "Текст"

Добавлено через 00:48 сек.
чейта не может? return не будет работать с echo? )

Добавлено через 06:35 сек.
А не работает у автора по той же причине, по которой не будет работать вот этот код:
function a(){
  return 'Test';
}

function b(){
  a();
}

echo b();

Господин ПЖ
0
Башка, ага все правильно, поэтому надо так

function one($a)
{
    if ($a > 0) {
        echo '<h6>'.$a.'</h6>';
        echo one($a-1);
    } else {
        return '<h5>Текст</h5>';
    }
}

echo one(5);
А

Оранжевые штаны
0
Ну или так:
    function one($a)
    {
        if ($a > 0) {
            echo '<h6>'.$a.'</h6>';
            return one($a-1);
        } else {
            return '<h5>Текст</h5>';
        }
    }

    echo one(5);
раз уж вызов через echo
Автор
Землянин
0
Vantuz, странно, но у меня все заработало когда я убрал else...
function one($a) {
    if ($a > 0) {
        echo '<h6>'.$a.'</h6>';
        one($a-1);
    }
    return '<h5>Текст !</h5>';
 }
echo one(2);
Автор
Землянин
0
Ну, мне нужно "постоянное" возвращаемое значение функцией, а не одно значение из двух предложенных вариантов условия if ... else (как в этом коде):

 function one($a)
    {
        if ($a > 0) {
            echo '<h6>'.$a.'</h6>';
            return one($a-1);
        } else {
            return '<h5>Текст</h5>';
        }
    }

    echo one(5);
А

Оранжевые штаны
0
Зачем тебе вообще рекурсия?
Автор
Землянин
0
Башка, есть папка с html страничками. Ну, а мне надо из каждого .html файла вытащить 2 строчки Content-Location: (полный путь к странице).

Content-Type: multipart/related; start=; boundary=----------fiaS3lGu8TfpYgfSAFk3eT
Content-Location: http://seo-ng.net/seo-knigi/more/jenciklopedija-poiskovogo-prodvizhenija.html
Subject: =?utf-8?Q?=D0=9A=D0=BD=D0=B8=D0=B3=D0=B0=20=D0=AD=D0=BD=D1=86=D0=B8=D0=BA=D0=BB=D0=BE=D0=BF=D0=B5=D0=B4=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE=20=D0=BF=D1=80=D0=BE=D0=B4=D0=B2=D0=B8=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F.=20=D0=A1=D0=BA=D0=B0=D1=87=D0=B0=D1=82=D1=8C=20=D0=BA=D0=BD=D0=B8=D0=B3=D1=83=20=D0=B1=D0=B5=D1=81=D0=BF=D0=BB=D0=B0=D1=82=D0=BD=D0=BE=20"=D0=AD=D0=BD=D1=86=D0=B8=D0=BA=D0=BB=D0=BE=D0=BF=D0=B5=D0=B4=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE=20=D0=BF=D1=80=D0=BE=D0=B4=D0=B2=D0=B8=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F"?=
MIME-Version: 1.0

------------fiaS3lGu8TfpYgfSAFk3eT
Content-Disposition: inline; filename=jenciklopedija-poiskovogo-prodvizhenija.html
Content-Type: text/html; charset=utf-8; name=jenciklopedija-poiskovogo-prodvizhenija.html
Content-ID: 
Content-Location: http://seo-ng.net/seo-knigi/more/jenciklopedija-poiskovogo-prodvizhenija.html

Вот я и методом рекурсии хочу вытащить и первую строчку Content-Location и вторую. Так как в некоторых страницах полный путь к странице в первой строчке Content-Location отличается от второго Content-Location
Изменил: Суицидник (01.11.2016 / 01:28)
А

Оранжевые штаны
0
Возможно это тебе поможет:
 function one($a){
    if ($a > 0) {
        return '<h6>' . $a . '</h6>' . one($a - 1);
    } else {
        return '<h5>Текст</h5>';
    }
}

echo one(5);

Но я бы не использовал никаких рекурсий, сделал бы в лоб.
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск