С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/75: Рейтинг темы: голосов - 75, средняя оценка - 4.59
4 / 4 / 2
Регистрация: 06.03.2017
Сообщений: 180

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

15.09.2017, 17:57. Показов 16322. Ответов 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,294
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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru