Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 30

Рекурсия: напечатать цифры 1-1000 не прибегая к loop

21.07.2012, 21:59. Показов 2234. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер
Сегодня меня навестила идея написать рекурсивную функцию, которая печатает цифры 1-1000 не прибегая к loop.

Может у кого есть варианты получше?

Вот:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
class noname
{
    public function recursion($n)
    {
        if($n<=1000)        
        {
            echo "$n<br/>";               
            self::recursion(++$n);
        }
    }
}
$a = new noname();
$a->recursion(1);
 
?>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.07.2012, 21:59
Ответы с готовыми решениями:

В промежутке от 103 до 1000 напечатать все трехзначные числа, цифры у которых различны
Здравствуйте,помогите пожалуйста исправить программу,данная программа должна в промежутке от 103 до 1000 напечатать все трехзначные цифры...

Найти все простые числа из интервала (1000, 9999), у которых сумма первой и второй цифры равна сумме третьей и четвертой цифры.
Всем привет! :beach: Дали 6 заданий по практике, нужно выбрать одну из них и написать на С++ (Builder) и Pascal ABC. Я пробовал зделать...

Напечатать все цифры, входящие в заданную строку и подсчитать количество вхождений каждой цифры
Напишите программу, которая печатает все цифры, входящие в заданную строку и подсчитывает количество вхождений каждой цифры.

5
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
22.07.2012, 07:27
Если задачу возможно решить одинаково просто/удобно как циклом, так и рекурсией, то цикл предпочтительнее, ибо рекурсей можно запросто добиться переполнения стека и аварийного завершения.
Цитата Сообщение от me.mamba Посмотреть сообщение
Может у кого есть варианты получше?
1. Использовать цикл.
2.
PHP
1
2
3
echo join('<br/>', range(1, 1000));
// но тут мы имеем одновременно все числа в памяти
// цикл будет быстрее
3. Придумать нормальные имена классу и методу. Ведь задача конкретно сформулирована - "печатает цифры 1-1000".
4. А если надо будет не до 1000, а до 1042, то Вы под каждое число будете заводить отдельный класс или метод? Зачем какое-то странное число 1000 жестко зашито внутри?
PHP
1
2
3
4
5
6
7
8
9
10
class noname {
    public function recursion($n) {
        if ($n > 0) {
            self::recursion($n - 1);
            echo "$n<br/>";
        }
    }
}
$a = new noname();
$a->recursion(1000);
1
0 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 30
23.07.2012, 13:07  [ТС]
Vovan-VE, спасибо огромное

А как насчет такой задачи: сколько раз встречается цифра 4 от 1 до 486?

Вот что у меня получилось:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
 
class noname
{                            
    function counter($ceil, $digit)
    {                                
        for($num=0, $counter=0; $num<=$ceil; $num++)
        {                                                                                                        
            for($length=0; $length<=strlen($num); $length++)
            {
                substr($num, $length, 1)==$digit? $counter++: $counter;
            }                                                                                  
        }                                     
            
            echo $counter;
    }
}
$object = new noname();         
$object->counter(486,4);
?>
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
23.07.2012, 13:41
Цитата Сообщение от me.mamba Посмотреть сообщение
сколько раз встречается цифра 4 от 1 до 486?
тип как рекурсией ?
0
0 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 30
23.07.2012, 13:50  [ТС]
Необязательно.

Добавлено через 4 минуты
Я выложила свою версию кода, но думаю есть версии получше
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
24.07.2012, 03:37
Например так
PHP
1
<?php echo substr_count(implode('', range(1, 486)), 4);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.07.2012, 03:37
Помогаю со студенческими работами здесь

Дано 4 цифры, напечатать цифры в порядке возрастания
в программе ввел 4 числа,она должна распологать цифры в порядке возрастания,без всяких массивов и циклов void lowtohigh(int a, int...

Рекурсия: найти числа, кратные трем, начиная с заданного n и до 1000
здравствуйте,помогите плиз, нужно: Написать программу, печатающую числа, кратные трем, начиная с заданного n и до 1000.

Напечатать все простые числа до 1000
Здрасьте всем! Такая вот задача: Напечатать все простые числа до 1000. В принципе есть код, но правильный ли он. И что делает скажем...

Warining For-loop variable 'i' may be undefined after loop
Что не так с кодом? При компиляции программы появляется предупреждение:&quot; Unit1.pas(46):For-loop variable 'i' may be undefined after...

Warining For-loop variable 'i' may be undefined after loop
Как исправить код, что бы программа работала корректно. var Form1: TForm1; implementation {$R *.dfm} procedure...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru