2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
|
||||||
1 | ||||||
Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х)10.07.2013, 18:57. Показов 2143. Ответов 20
Метки нет (Все метки)
Вводим число х. Функция должна вызывать сама себя до тех пор пока sum не станет больше х. Но программа выдает ошибку, Подскажите в чем проблема пожалуйста? Заранее спасибо.
0
|
10.07.2013, 18:57 | |
Ответы с готовыми решениями:
20
While и repeat. Вводить числа до тех пор пока произведение четных не станет больше 20 Прибавлять число к самому себе до тех пор пока оно не станет больше 20 Вводить положительные числа до тех пор, пока сумма их произведений не станет больше 10000 Увеличивать введенное число в два раза до тех пор, пока оно не станет больше 1000 |
10.07.2013, 19:01 | 2 |
Каждый раз, когда ты вызываешь функцию из нее самой, ты передаешь одинаковое значение x. Поэтому, если x > 1 (x > sum), то будет бесконечная рекурсия. Каждый раз будет выполняться условие в while (sum<x), откуда будет вызываться функция.
0
|
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
|
|
10.07.2013, 19:20 [ТС] | 3 |
Dani,
А я и не хочу менять значени "х", мне нужно, что-бы менялось значение sum, а оно меняется. У меня ведь считается когда sum>x то выход. Если менять на каждой итерации "х", то, что тогда будет я не знаю....
Добавлено через 1 минуту Dani, так и не понял, что нужно исправить, что бы программа не выдавала ошибку.
0
|
10.07.2013, 20:11 | 4 | ||||||||||
Nikko12, ты вызвал функцию. А в цикле while, в который попадаем только 1 раз, вызывается точно такая же функция с параметром x.
0
|
Thinker
|
10.07.2013, 20:57
#6
|
Не по теме: Nikko12, и что это такое, где само задание? ну почему жаждущие помощи размещают свои "каракули" и спрашивают: "а что там не так?". схема то очевидна:
1
|
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
|
|
11.07.2013, 21:23 [ТС] | 7 |
Thinker, Нет не какого задания, я хотел попробовать реализовать рекурсию, у меня не вышло, обратился сюда за помощью
Добавлено через 1 минуту soican, Хотел рекурсивно вычислять сумму пока она не превысит введеное число "х".
0
|
11.07.2013, 21:25 | 8 |
ну так придумайте задачу, четко сформулируйте, вас поймут, тогда можно надеяться на помощь. как здесь
Побитовые сдвиги и итерация, и рекурсия, главное, четко задать условия игры.
0
|
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
|
|
11.07.2013, 21:36 [ТС] | 9 |
Dani, У меня к Вам несколько вопросов:
1. Почему моя программа завершается с ошибкой? 2. Почему цикл while() вызывается один раз?? 3. Так ведь она и должна передоваться только с одним параметром, с "х". Иначе как он будет знать до какого числа ему считать сумму? 4. Я ведь передаю один раз параметр в функцию, функция выполнила вычисления и вернула результат, поэтому не понимаю, что тут такого страшного??? Добавлено через 41 секунду Thinker, ВВожу число "х" и передаю его как параметр в функцию, хотел попробовать рекурсивно вычислять сумму до тех пор пока сумма не превысит введеное число "х".
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
12.07.2013, 02:43 | 10 | |||||
1
|
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
|
|
12.07.2013, 07:18 [ТС] | 11 |
alsav22, Спасибо за помощь, но зачем в функцию передавать два параметра??? Почему нельзя обойтись одним?
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
12.07.2013, 14:51 | 12 |
Что-то должно меняться чтобы был выход из рекурсии. Если x не меняется, значит sum должна меняться в функции. Можно передавать только x, но тогда x нужно менять в функции, чтобы при определённом значени был выход из рекурсии.
0
|
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
|
|
12.07.2013, 18:11 [ТС] | 13 |
alsav22, Спасибо.
0
|
12.07.2013, 18:37 | 14 | |||||
сумму чего ты хочешь вычислять? тот код который тебе написали будут возвращать x(если x четное) или х+1 (если x нечетное)
его вообще можно сделать таким
1
|
Комп_Оратор)
|
||||||
12.07.2013, 19:13 | 15 | |||||
1
|
2 / 2 / 0
Регистрация: 07.06.2013
Сообщений: 162
|
|
13.07.2013, 15:27 [ТС] | 16 |
Я именил sum +=2; на sum ++; и все ок. Все отлично считается. Меня не интересовала сумма, меня интересовала организация рекурсиии и в чем заключалась моя ошибка.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
14.07.2013, 07:50 | 19 | |||||
Так уж и не было? Вызов функции самой себя есть. Другое дело, что к подсчёту sum рекурсия не имеет отношения.
Нахождение суммы арифметической прогрессии от 1, 2, 3, ... 10:
0
|
14.07.2013, 13:14 | 20 |
0
|
14.07.2013, 13:14 | |
14.07.2013, 13:14 | |
Помогаю со студенческими работами здесь
20
Вводить числа до тех пор, пока их сумма не станет больше 100. Эту сумму и число слагаемых вывести на экран Перезапуск интернет-подключения до тех пор, пока IP-адрес не станет выделенным Цикл с предусловием выполняется до тех пор, пока условие выполнения не станет ложным Суммировать до тех пор, пока очередное слагаемое по модулю не станет меньше eps Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |