[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Задание по-английски - я правильно поняла?
Страницы: 1, 2
Valeriya12
У меня нет проблем с английским, честное слово (скорее всего с русским). Но, есть задание которое не очень понятно для меня (учитель решил на английском давать).

Цитата
3.Write a program that asks the user to type an integer N and compute u(N) defined with :
u(0)=3
u(1)=2
u(n)=n*u(n-1)+(n+1)*u(n-2)+n


Я думаю, что он имел в виду, что если
n==0 это значит, что u=3, а если n==1, значит, что u=2. А если n!=0 или n!=1, значит делаем вот это

$u(n)=$n*$u($n-1)+($n+1)*$u($n-2)+$n

Хоть, чтоб php это рассчитает, во первых надо изолировать все "u" на другую сторону. То есть, переустраивать эту формулу как по-правилам математики. Получаю:

$u=(($n*2+$n*2)+$n)/(1+2*$n+2);

А это php уже может рассчитать.

Вот... как вы считаете, я правильно поняла задание? Вот полное решение:


<?php
echo "Enter a number";
$n=(int)fgets(STDIN);
if ($n==0)
{
$u=3;
}
else if ($n==1)
{
$u=2;
}
else if ($n>1 || $n<0)
{
$u=(($n*2+$n*2)+$n)/(1+2*$n+2);
}
echo $u;
?>
Oyeme
Вообщето у Вас тут будет рекурсии ;)
Что-то на подобии чисел Фибоначчи,только с Вашей формулой.

http://ru.wikipedia.org/wiki/%D0%A7%D0%B8%...%87%D1%87%D0%B8

u(n)=n*u(n-1)+(n+1)*u(n-2)+n



Потому что при

Цитата
u(0)=3
u(1)=2


Вам нужно создать функцию u(N),которая работает рекурсивно :)
Valeriya12
Если я правильно Вас поняла, скажем, что пользователь вводит 6

Значит, что:

u(n)=n*u(n-1)+(n+1)*u(n-2)+n

Будет:

u(n)=6*u(6-1)+(6+1)*u(6-2)+6
u(n)=6*u(5)+(7)*u(4)+4
u(n)=u(30)+*u(28)+4

И пока
Цитата
u(1)=2
значит, что:

u(n)=60+56+4
u(n)=120


Как логика?

sergeiss
Цитата (Valeriya12 @ 17.03.2014 - 15:21)
Если я правильно Вас поняла....

Ты лучше на ПХП напиши, будет проще и нагляднее. И уже в виде, готовом для использования.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Oyeme
Цитата (Valeriya12 @ 17.03.2014 - 11:21)
Если я правильно Вас поняла, скажем, что пользователь вводит 6

Значит, что:

u(n)=n*u(n-1)+(n+1)*u(n-2)+n

Будет:

u(n)=6*u(6-1)+(6+1)*u(6-2)+6
u(n)=6*u(5)+(7)*u(4)+4
u(n)=u(30)+*u(28)+4

И пока
Цитата
u(1)=2
значит, что:

u(n)=60+56+4
u(n)=120


Как логика?

В корне не верно.
Вы пытаетесь решить как математическое уравнение,но тут я уже сказал будет то же самое что в Числах Фибоначчи

Прочитайте что такое Числа Фибоначчи

user posted image

Вот сделал для Вас


function u($n){
if($n === 0) return 3;
elseif($n === 1) return 2;
else {
//n*u(n-1)+(n+1)*u(n-2)+n
return $n*u($n-1)+($n+1)*u($n-2)+$n;
}
}

echo u(6);


u(6) = 13263
glock18
Цитата (Oyeme @ 17.03.2014 - 11:32)
Вы пытаетесь решить как математическое уравнение

Неправда! Именно так она и не пыталась tongue.gif
sergeiss
Цитата (Oyeme @ 17.03.2014 - 15:32)
Вот сделал для Вас

Моё мнение - "оказал медвежью услугу". Пока подсказывал, в какую сторону думать, то да, был прав. Но вот писать такой простой код за кого-то? Человек не научится сам программировать.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valeriya12
Цитата
Прочитайте что такое Числа Фибоначчи


Ой, а я думала, что вы издевались надо мной, когда послали эту статью википедии, потому, что ссылка привела меня к человеку(Фибоначчи), а не на его теорию (Числа Фибоначчи). Теперь я прочитала... но все же что-то я торможу.. как я смогла узнать с самого начала, что здесь Числа Фибоначчи играют роль? Что вам подсказал?
Цитата

Моё мнение - "оказал медвежью услугу". Пока подсказывал, в какую сторону думать, то да, был прав. Но вот писать такой простой код за кого-то? Человек не научится сам программировать.


Если честно это очень помогает мне видеть пример! Спасибо. Да, иногда такие прямые ответы оказывают медвежью услугу но ведь в этот раз само задание не было ясно для меня. Что от меня хотели? Честно не поняла. Все еще не знаю как можно заранее определять, что здесь надо с Числами Фибоначчи работать.
sergeiss
Цитата (Valeriya12 @ 17.03.2014 - 21:11)
Все еще не знаю как можно заранее определять, что здесь надо с Числами Фибоначчи работать.

Когда в ответе появились "числа Фибоначи", то я примерно так и подумал.... Да не надо тут с ними работать!!! smile.gif Они были приведены в качестве ПРИМЕРА РЕКУРСИИ, не более того smile.gif

Пример функции, написанный чуть выше, как раз использует рекурсию, т.е. вызов функцией "самой себя", но с другими параметрами. В начальных условиях как раз рекурсивная функция написана, вобщем-то. Поэтому о ней речь и идет.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valeriya12
Цитата
Когда в ответе появились "числа Фибоначи", то я примерно так и подумал.... Да не надо тут с ними работать!!! smile.gif Они были приведены в качестве ПРИМЕРА РЕКУРСИИ, не более того smile.gif


Аааага! Понятно :)


По-моему я уже сделала пример с такой функцией.. недавно сделала пример Факториа́ла

<?php
echo "please choose a number \n";
$a=trim(fgets(STDIN));
$fac=1;
for ($x=$a; $x>=1; $x--) {
$fac = $fac * $x;
}
echo "Factorial of " . $a . " is " . $fac . "";

?>


Это также рекурсивная функция, да?

Это решение, которое пользователь "Oyeme" показал, невероятно просто! Он как бы прямо написал функцию, и все. Потом PHP служит в качестве калькулятора. Давай я попробую это с другом похожим примером.


Цитата
Write a program that asks the user to type an integer N and compute u(N) defined with :
u(0)=1
u(1)=1
u(n+1)=u(n)+u(n-1)



<?php
$n=(int)fgets(STDIN);
function u($n){
if($n === 0) return 1;
elseif($n === 1) return 1;
else {
return u($n)+u($n-1);
}
}

echo u($n+1);
?>


Ах нет... я получаю: "PHP Fatal error: Maximum function nesting level of 100 reached, aborting! in line 7." Но какая разница между этими функциями? Это та же самая логика как в предыдущим примере. Хотя, в предыдущим примере - все работает без ошибок.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.