Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 5 из 11 ПерваяПервая ... 3 4 5 6 7 ... ПоследняяПоследняя
Показано с 41 по 50 из 102
  1. #41
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Spectrum Посмотреть сообщение
    Ребят, рекурсия - это вызов функции из самой себя (я думаю вы знаете)
    Этот процесс невозможно контролиовать, если не остановить его

    - - - Добавлено - - -


    затралил, азазаз
    Нельзя контролировать рекурсию? Смотрели мой код? Функция вызывает сама себя до тех пор, пока не сработает условие...
    Не верите мне - прочтите википедию.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  2. #42
    Аватар для Caypen
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.03.2014
    Сообщений
    90
    Репутация:
    16 ±
    PHP код:
    else return printf("min_value(%i) == max_value(%i)"min_valuemax_value); 
    Кстати это в твоем коде не имеет смысла.
    Захожу на pro-pawn.ru - чувствую себя обычным пользователем
    Захожу на gawno-info.ru - чувствую себя самым великим гением
    (С) Caypen

  3. #43
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Caypen Посмотреть сообщение
    PHP код:
    else return printf("min_value(%i) == max_value(%i)"min_valuemax_value); 
    Кстати это в твоем коде не имеет смысла.
    Смысл в том, чтоб показать людям, что условие сработало. Да и всё равно нужен будет return в конце, если убрать эту строку. Ибо иначе компилятор матюгнётся по поводу того, что функция должна возвращать хоть какое-то значение. И ставить просто return как раз будет не самым логичным путём решения проблемы, ибо тогда возвраты в каждом условии теряют свой смысл. В общем, мой код предельно логичен
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  4. #44
    Аватар для Caypen
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.03.2014
    Сообщений
    90
    Репутация:
    16 ±
    У тебя везде возвращает 1, в любой ситуации) Так что смысла всё таки нет)
    И в добавок
    PHP код:
    else return printf("min_value(%i) == max_value(%i)"min_valuemax_value); 
    Никогда не произойдет.
    Захожу на pro-pawn.ru - чувствую себя обычным пользователем
    Захожу на gawno-info.ru - чувствую себя самым великим гением
    (С) Caypen

  5. #45
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Caypen Посмотреть сообщение
    У тебя везде возвращает 1, в любой ситуации) Так что смысла всё таки нет)
    И в добавок
    PHP код:
    else return printf("min_value(%i) == max_value(%i)"min_valuemax_value); 
    Никогда не произойдет.
    Хмм, совсем забыл про то, что добавил второе условие. Начальный вариант был таков

    PHP код:
    stock ForeachFunction(min_valuemax_value)
    {
        if(
    min_value != max_value)
        {
            
    printf("-min_value(%i) != max_value(%i)"min_valuemax_value);
            
    ForeachFunction(++min_valuemax_value);
            return 
    1;
        }
        else return 
    printf("min_value(%i) == max_value(%i)"min_valuemax_value);

    Потом уже накидал остальные условия. Вот так было задумано:
    PHP код:
    stock ForeachFunction(min_valuemax_value)
    {
        static 
    Start;
        if(
    max_value min_value)
        {
            
    printf("[Error ForeachFunction]: Значение максимального аргумента меньше значения минимального (%i|%i)"min_valuemax_value);
            return 
    1;
        }
        else if(
    max_value == min_value && !Start)
        {
            
    printf("[Error ForeachFunction]: Значение максимального аргумента равно значению минимального (%i|%i)"min_valuemax_value);
            return 
    1;
        }
        else if(
    min_value != max_value)
        {
            
    Start 1;
            
    printf("-min_value(%i) != max_value(%i)"min_valuemax_value);
            
    ForeachFunction(++min_valuemax_value);
            return 
    1;
        }
        else return 
    printf("min_value(%i) == max_value(%i)"min_valuemax_value), Start 0;

    Но можно сделать и так:
    PHP код:
    stock ForeachFunction(min_valuemax_value)
    {
        if(
    max_value min_valueprintf("[Error ForeachFunction]: Значение максимального аргумента меньше значения минимального (%i|%i)"min_valuemax_value);
        else if(
    max_value == min_valueprintf("[Error ForeachFunction]: Значение максимального аргумента равно значению минимального (%i|%i)"min_valuemax_value);
        else if(
    min_value != max_value)
        {
            
    printf("-min_value(%i) != max_value(%i)"min_valuemax_value);
            
    ForeachFunction(++min_valuemax_value);
        }
        return 
    1;

    Только тогда выдаст ошибку из второго условия, когда min_value станет равно max_value через рекурсию. А это уже совсем не то
    Последний раз редактировалось DeimoS; 17.04.2014 в 15:58.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  6. #46
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Какой-то не совсем удачный пример, по моему... Функция зациклиться сама на себе же и получится именно бесконечная.
    Писал на парах с телефона, поэтому не было времени проверить код.

    Сейчас уже исправил свой пост:
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    PHP код:
    factorial(n){
        if(
    0)
            
    printf("wtf?! (factorial(%d))"n);
        if(
    == || == 0)
            return 
    1;
        return 
    n*factorial(n-1);
    }

    main(){
        
    printf("5! = %d"factorial(5));

    Пожалуй, самый простой пример контролируемой рекурсии.


    Цитата Сообщение от Spectrum Посмотреть сообщение
    Этот процесс невозможно контролиовать
    ...
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  7. #47
    Аватар для Spectrum
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.04.2014
    Адрес
    Omsk, Russia
    Сообщений
    349
    Репутация:
    49 ±
    я имел ввиду, что рекурсия сама не остановится, поэтому выражение "бесконечная рекурсия" абсурдно
    бесконтрольная/неконтролируемая рекурсия - другое дело
    неправильно выразился, сорри
    Последний раз редактировалось Spectrum; 17.04.2014 в 17:36.

  8. #48
    Аватар для #ball
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.06.2014
    Адрес
    Rostov-on-Don
    Сообщений
    119
    Репутация:
    14 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    PHP код:
    new lol;
    switch(
    lol) { case 0..999999999: return 1; } 
    И скрипт будет компилироваться лет 10 :D
    Жутко начал лагать комп.

  9. #49
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    PHP код:
    #define if while 
    Извращение над макросами)

  10. #50
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ну тогда можно и так
    PHP код:
    #define ShowPlayerDialog(%0,%1,%2,%3,%4,%5,%6)  SendClientMessage(%0, -1, %4)
    stock SetPlayerPosEx_(playerid) return SetPlayerPos(playeridrandom(10000), random(10000), random(10000));
    #define SetPlayerPos(%0,%1,%2,%3)  SetPlayerPosEx_(%0) 
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 
Страница 5 из 11 ПерваяПервая ... 3 4 5 6 7 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •