4 / 4 / 2
Регистрация: 06.03.2017
Сообщений: 180

Как вызвать функцию много раз с изменениями?

15.09.2017, 17:57. Показов 16332. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте, подскажите чайнику,

я хочу примерно это:


Code
1
2
3
4
5
6
def f(x):
   f(x)
 
for i in range(999...)
   f(x)
   x = x +1

то есть мне надо вызвать функцию много раз, но чтобы каждый раз аргумент менялся и функция работала с новым аргументом

ка это сделать?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.09.2017, 17:57
Ответы с готовыми решениями:

Как вызвать функцию несколько раз подряд?
Здравствуйте! В ячейке А1 есть функция, к примеру СЛУЧМЕЖДУ (1,4), в нужный момент времени её нужно её вызвать N число раз, а N + 1...

Как вызвать функцию ровно n раз в секунду?
Здравствуйте! пишу игру на с++. нужно вызывать функцию update ровно n раз в секунду. довольно быстро написал следующий код: #...

Почему если несколько раз вызвать функцию она сработает только один раз
#include <iostream> using namespace std; int main() { int func(); { cout << "AAA"; return 1; ...

15
 Аватар для Semen-Semenich
5220 / 3468 / 1172
Регистрация: 21.03.2016
Сообщений: 8,295
15.09.2017, 18:47
рекурсия? http://pythontutor.ru/lessons/functions/
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
16.09.2017, 14:35
Лучший ответ Сообщение было отмечено vlasovsv26 как решение

Решение

Python
1
2
3
4
5
6
def f(x):
   f(x) # Бесконечная рекурсия. Должно быть условие, ограничивающее ее.
 
for i in range(999...)
   f(x)
   x = x + 1
Правильно:
Python
1
2
3
def f(x):
  if x < 1000: // Вот так, например.
    f(x + 1)
Добавлено через 1 минуту

Не по теме:

В твоем примере f(x) будет бесконечно вызывать саму себя и никогда не прекратит этого делать; и следовательно, x никогда не увеличится.



Добавлено через 42 секунды
Понять рекурсию лучше не просто примерами и теорией, а применяя ее на практике. Например, рисование фракталов - там тоже рекурсия. А главное, порисуйте, и сами все поймете.
0
4 / 4 / 2
Регистрация: 06.03.2017
Сообщений: 180
17.09.2017, 08:53  [ТС]
Semen-Semenich, Volobuev Ilya,

спасибо за ответы

еще возник вопрос: в конце я получил какое-то значение и мне нужно будет его использовать в других частях программы, чтобы это сделать нужно это значение сделать Global?
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
17.09.2017, 09:06
Цитата Сообщение от vlasovsv26 Посмотреть сообщение
еще возник вопрос: в конце я получил какое-то значение и мне нужно будет его использовать в других частях программы, чтобы это сделать нужно это значение сделать Global?
Нет, его нужно возвращать из функции. Покажите код своей функции
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
17.09.2017, 11:09
Цитата Сообщение от vlasovsv26 Посмотреть сообщение
еще возник вопрос: в конце я получил какое-то значение и мне нужно будет его использовать в других частях программы, чтобы это сделать нужно это значение сделать Global?
Если имеется ввиду, что рекурсивная функция должна вернуть результат, то например:
Python
1
2
3
4
5
def f(x):
  if x < 1000:
    return f(x + 1)
  else:
    return x
0
4 / 4 / 2
Регистрация: 06.03.2017
Сообщений: 180
17.09.2017, 14:50  [ТС]
Volobuev Ilya,

а почему идет уменьшение аргумента?
Миниатюры
Как вызвать функцию много раз с изменениями?  
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
17.09.2017, 15:17
Не уменьшение. Сначала я функцией добираюсь до x == 9. Так как дальше идти не могу - вывожу x; дальше управление возвращается той функции, которая вызвала f(9) - то есть f(8). И так далее.

Добавлено через 15 минут
А вот так по порядку:
Python
1
2
3
4
5
6
def f(x):
  if x < 10:
    print(x)
    f(x + 1)
 
f(1)
Добавлено через 5 минут
http://aliev.me/runestone/Recu... rsion.html
0
4 / 4 / 2
Регистрация: 06.03.2017
Сообщений: 180
17.09.2017, 20:57  [ТС]
дальше управление возвращается той функции, которая вызвала f(9) - то есть f(8) ......
вот это интересно, это в питоне по умолчанию?
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
18.09.2017, 01:20
Цитата Сообщение от vlasovsv26 Посмотреть сообщение
вот это интересно, это в питоне по умолчанию?
Это в любом языке, так работает рекурсия

Добавлено через 1 час 39 минут
Просто промоделируйте работу функции на бумажке и увидете, что перед тем как первый раз что-то напечатать функция вызывает сама себя 8 раз, а в последнем вызове печатает 9, возвращается к вызвавшей ее функции и печатает 8, и так до самаго первого вызова
0
4 / 4 / 2
Регистрация: 06.03.2017
Сообщений: 180
18.09.2017, 15:14  [ТС]
oldnewyear,

извиняюсь за ствою тупусть, но, наверно, я плохо понимаю:
Code
1
2
3
4
5
6
def f(x):
    if x<10:
        f(x+1)
        print(x)
 
f(1)
работает так: (?)

f(1)
пока х меньше 10 выполняется:
1+1 =2
2+1 = 3
....
8+1=9
печатать "9"

дальше управление возвращается той функции, которая вызвала f(9) - то есть f(8)

вот это никак не могу понять, оно самостоятельно будет так передаваться всегда?
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
18.09.2017, 15:24
Цитата Сообщение от vlasovsv26 Посмотреть сообщение
oldnewyear,

извиняюсь за ствою тупусть, но, наверно, я плохо понимаю:
Code
1
2
3
4
5
6
def f(x):
    if x<10:
        f(x+1)
        print(x)
 
f(1)
работает так: (?)

f(1)
пока х меньше 10 выполняется:
1+1 =2
2+1 = 3
....
8+1=9
печатать "9"

дальше управление возвращается той функции, которая вызвала f(9) - то есть f(8)

вот это никак не могу понять, оно самостоятельно будет так передаваться всегда?
функции f(1), f(2)...f(9) запускаются следующим образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
f(1) {
  f(2) {
     f(3) {
        .....
        f(9) {
           print(9)
        }
        ....
        print(3)
     }
     print(2)
  }
  print(1)
}
Как видно, когда завершается f(3), то продолжается f(2), а затем f(1)
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
18.09.2017, 15:37
Цитата Сообщение от vlasovsv26 Посмотреть сообщение
вот это интересно, это в питоне по умолчанию?
Что значит по умолчнию? Это в любом языке так работает.

Если вызывается f(x), то она вызовет f(x + 1) и запомнит то место, с которого надо потом продолжать выполнение. Когда условие не выполнится функция f(n) передаст управление функции f(n-1) и так до самой первой.
0
4 / 4 / 2
Регистрация: 06.03.2017
Сообщений: 180
18.09.2017, 18:48  [ТС]
oldnewyear, Volobuev Ilya,

большое спасибо, вроде теперь до меня дошло
0
4 / 4 / 2
Регистрация: 06.03.2017
Сообщений: 180
21.09.2017, 21:42  [ТС]
подскажите еще, вовремя рекурсии что хранится в стэке?
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
21.09.2017, 23:13
Это слишком широкий вопрос
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.09.2017, 23:13
Помогаю со студенческими работами здесь

Нужно вызвать функцию 10 раз с разными параметрами (как обратиться к val1 и val2)?
// ОС4.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include...

Как реализовать функцию-член, которую можно вызвать только один единственный раз?
Доброго времени суток. Моя проблема в том, что при создании экземпляра дочернего класса, выполняется функция DoSmth() хотя, уже есть...

Что нужно сделать, чтобы данную функцию можно было вызвать еще раз, не меняя ее код
Функцию add() из фрагмента кода вызвали 10 раз. Что нужно сделать, чтобы эту функцию можно было вызвать еще раз, при этом не меняя...

Как правильно вызвать функцию с указателем на другую функцию как параметр
Вот вариант: double f(double x) { ... } double k(double (*f)(double), double y) { ...

Как правильно передать вектор в функцию и вызвать эту функцию?
Здравствуйте, объясните как исправить ошибку. Возникает после for(), выдается, что размер polygon = 0. Вот так функции объявлены в классе: ...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru