Форумы портала PHP.SU » PHP » Уроки php » Обсуждение уроков.

Страниц (11): В начало « ... 3 4 5 6 [7] 8 9 10 11 »
 

91. RomAndry - 06 Января, 2010 - 10:00:51 - перейти к сообщению
Спасибо, поправил очепятку =)
93. RomAndry - 07 Января, 2010 - 21:48:33 - перейти к сообщению
спасибо, сразу по ходу и исправляю =)
94. mike6 - 12 Января, 2010 - 12:05:13 - перейти к сообщению
Добрый день,
возник вопрос, почему

PHP:
скопировать код в буфер обмена
  1.  
  2. function faс($n)
  3. {
  4.   return ($n <= 1) ? 1 : $n * faс($n - 1);
  5.   }
  6. echo faс(5);
  7.  


работает как надо,а вот
PHP:
скопировать код в буфер обмена
  1.  
  2. function faс2($z)
  3. {
  4.  
  5. if ($z <= 1) {
  6. echo "1";
  7. } else {
  8. return $z * faс2($z-1);
  9. }
  10.  
  11. }
  12.  
  13. echo faс2(5);
  14.  


Может быть что то упустил. Спасибо.
95. EuGen - 12 Января, 2010 - 12:09:59 - перейти к сообщению
Потому что в случае если z<=1 (хотя это не логично - правильнее писать z==1) Вы ничего не возвращаете, а делаете вывод.
96. mike6 - 12 Января, 2010 - 12:36:05 - перейти к сообщению
EuGen даже если убрать сравнение, все равно функция на работоспособна. Как я понял функции идентичны, разве что сопосб записи другий. Или не совсем так ?
97. Champion - 12 Января, 2010 - 12:51:50 - перейти к сообщению
mike6, никто не просил убирать сравнение. Тебе написали, что единицу надо вернуть, а не вывести в браузер при этом ничего не возврещая
98. mike6 - 12 Января, 2010 - 16:14:15 - перейти к сообщению
Champion теперь ясно. Спасибо за уроки.
99. Petro - 07 Апреля, 2010 - 17:20:49 - перейти к сообщению
В уроке №3 не могу понять эти строки Огорчение и как они вообще связаны с остальным кодом.
<?PHP
function fibonacci($num) // $num - номер интересующего нас элемента
{
if ($num < 1) { // номера элемента меньше 1 не существует, заканчиваем функцию
return false;
}
if ($num <= 2) { // если это один из первых элементов, нетрудно увидеть как они определяются
return ($num - 1);
}

// общий случай. Идем от 3го до требуемого номера
$pre_pre = 0; // элемент, скажем так, предпредыдущий.
$current = 1; // текущий

for ($i = 3; $i <= $num; $i++) {
$pre = $current; // бывший текущий становится предыдущим
$current = $pre + $pre_pre; // определяем текущий элемент
$pre_pre = $pre; // бывший предыдущий становится предпредыдущим
}
return $current;

}

/*** Основная часть программы ***/
$n = 5;
echo fibonacci($n); // 0,1,1,2,3 - получается 3
?>
100. Petro - 07 Апреля, 2010 - 23:03:51 - перейти к сообщению
Методом "тык + поисковик" - разобрался. Фуф.
Теперь не могу понять эту строчку return fib($n - 1, $pre + $pre_pre, $pre);
Что именно в ней делается?

Вот вся программа из урока №3
<?PHP
function fib($n, $pre = 1, $pre_pre = 0)
{
if ($n == 1) return 1;
if ($n < 1) return false;
if ($n == 2)
return $pre;

return fib($n - 1, $pre + $pre_pre, $pre);
}


echo fib(5);
?>
101. pixtart - 11 Апреля, 2010 - 19:59:09 - перейти к сообщению
Здравствуйте, еле пробрался через Вашу капчу Улыбка

Есть вопрос по "Урок № 2 - Немного управления."
Там для проверки есть задание

1. Что станет результатом исполнения:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP
  2. $iData=5;
  3. if($iData%5)
  4. {
  5.   echo($iData>0?"case 1":"case 0");
  6. }
  7. else
  8. {
  9.   echo($iData<0?"case 3":"case 2");
  10. }
  11. ?>


Оператор % - означает целочисленное деление(по модулю), значит $iData будет равна 5/5=1. Правильно? Тогда будет результатом выполнения кода выведено "case 1". Вы же в ответах пишете, что это будет 0, соотв. выведеться в результате "case 2". Почему?

а вобщем спасибо, уроки таким живым языком написаны... Читать не нудно, а пробовать интересноУлыбка
102. Мелкий - 11 Апреля, 2010 - 20:01:23 - перейти к сообщению
pixtart пишет:
Оператор % - означает целочисленное деление(по модулю), значит $iData будет равна 5/5=1. Правильно?

Нет, это остаток от целочисленного деления. 5/5 делится без остатка -> 0.
103. pixtart - 12 Апреля, 2010 - 01:55:43 - перейти к сообщению
спасибо
я понял где не так понялУлыбка
104. Petro - 14 Апреля, 2010 - 22:02:19 - перейти к сообщению
<?PHP
$dir_hndl = opendir('/usr/home/mydir');
while (false !== ($name = readdir($dir_hndl)))
if ( $name == '..') {
echo 'Parent directory<br>';
continue;
}
elseif ( $name == '.') {
echo 'Current directory<br>';
continue;
}
if ( is_dir($name) ) echo $name.' is a dir<br>';
elseif ( is_file($name) ) echo $name. ' is a filr';
else echo $name. ' что же это может быть?<br> '
}
closedir($dir_hndl)
?>

Повторяю и набираю так же, на что мне выводит
Parse error: syntax error, unexpected '}', expecting ',' or ';' in C:\www\index.php on line 21

Правлю

<?PHP
$dir_hndl = opendir('/usr/home/mydir');
while (false !== ($name = readdir($dir_hndl)))
if ( $name == '..') {
echo 'Parent directory<br>';
continue;
}
elseif ( $name == '.') {
echo 'Current directory<br>';
continue;
}
elseif ( is_dir($name) ) { echo $name.' is a dir<br>'; }
elseif ( is_file($name) ) { echo $name. ' is a filr';}
else { echo $name. ' что же это может быть?<br> '}
#}
closedir($dir_hndl)
?>

выводит
Current directory
Parent directory
cgi is a dir
cgi-bin is a dir
index.php is a filr
perl is a dir
test.txt is a filr
test1.txt is a filr


Вопрос
Как на самом деле дожно быть или как будет правильно?
(Добавление)
Урок №8 http://www.php.su/lessons/?lesson_8
второй пример.
105. Petro - 15 Апреля, 2010 - 13:21:48 - перейти к сообщению
Еще в этом уроке есть вопросы к главе.
так вот, 3-й вопрос

3. Напишите скрипт, считывающий из файла f1.bmp строки, сортирующий их и отсортированный результат запишите в файл f1.mp3.

На сколько я знаю *. bmp это есть картинка. и как картинку (одну картинку) можно сортировать и по чем? текст сортировать можно, цифры, много картинок по названию, а 1-ну, не понимаю.

Обьясните пожалуйста.

 

Powered by ExBB FM 1.0 RC1