Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.97
maximus11
0 / 0 / 0
Регистрация: 02.06.2015
Сообщений: 1
#1

Функция вызывает сама себя 10 раз - C++

21.12.2010, 22:26. Просмотров 4884. Ответов 37
Метки нет (Все метки)

Всем доброго времени суток, простите студента заочника, но я вынужден к вам обратиться за помощью. Мне в институте для зачета преподаватель дал задачу для решения: Функция вызывает сама себя 10 раз. Помогите решить пожалуйста, буду вам очень признателен)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2010, 22:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Функция вызывает сама себя 10 раз (C++):

Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х) - C++
Вводим число х. Функция должна вызывать сама себя до тех пор пока sum не станет больше х. Но программа выдает ошибку, Подскажите в чем...

Программа, запускающая сама себя - C++
Требуется, чтобы программа запустила сама себя. Использую: system("start programma.exe"); Но при изменении названия файла такая функция...

Как зделать чтоб программа удалила сама себя - C++
Привет всем. У меня собственно такой вопрос: Как зделать чтоб программа удалила сама себя? Я имею в виду, чтоб после запуска,...

Функция компилируется, но вызывает виндовс ошибку - C++
int main() int r=replace(str, c1, c2); return 0; int replace(char *str, char c1, char c2) { int count=0; ...

Почему встроенная функция вызывает конструктор копирования? - C++
Почему встроенная функция вызывает конструктор копирования или всегда ли встроенная функция действительно встроеннаая? Но всё по порядку....

Функция с переменным количеством аргументов вызывает out of memory - C++
property(string & name_c, short nesting_c, string & level1, ...) { nesting=nesting_c; name=name_c; va_list p; ...

37
deadlock
376 / 355 / 8
Регистрация: 14.12.2010
Сообщений: 1,265
21.12.2010, 22:29 #2
C++
1
2
3
4
5
6
int counter=0;
void func()
{
  counter++;
  if (counter<=10) func();
}
0
maximus11
0 / 0 / 0
Регистрация: 02.06.2015
Сообщений: 1
21.12.2010, 22:31 #3
Спасибо очень вам благодарен)))
0
Напильнег
481 / 119 / 10
Регистрация: 30.09.2010
Сообщений: 473
22.12.2010, 00:50 #4
deadlock, фи, как не кузяво - через внешнюю переменную каждый второй дурак напишет.

Думается мне, что задача предполагает такое решение:
C++
1
2
3
4
5
6
7
8
9
void func(void)
{
  static unsigned k = 10;
 
  if (k) {
    printf("Recursive call\n");
    k--; func(); k++;
  }
}
0
deadlock
376 / 355 / 8
Регистрация: 14.12.2010
Сообщений: 1,265
22.12.2010, 00:57 #5
Напильнег, через статическую переменную изящно?
чем проще - тем меньше вопросов зададут, в условии не сказано: "сумничайте по-максимуму".
0
easybudda
Модератор
Эксперт CЭксперт С++
9969 / 5892 / 996
Регистрация: 25.07.2009
Сообщений: 11,159
22.12.2010, 01:05 #6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
void func(int left){
    if ( left < 1 )
        return;
    printf("Call of function(%d left).\n", --left);
    func(left);
}
 
#define NUM_CALLING 10
    
int main(void){
    func(NUM_CALLING);
    return 0;
}
0
Напильнег
481 / 119 / 10
Регистрация: 30.09.2010
Сообщений: 473
22.12.2010, 01:09 #7
Цитата Сообщение от deadlock Посмотреть сообщение
Напильнег, через статическую переменную изящно?
Да.

Цитата Сообщение от deadlock Посмотреть сообщение
чем проще - тем ...
Через внешнюю перемену - слишком просто.

Добавлено через 2 минуты
Чебуран-мутант, через формальный параметр - это вообще децл.
1
easybudda
Модератор
Эксперт CЭксперт С++
9969 / 5892 / 996
Регистрация: 25.07.2009
Сообщений: 11,159
22.12.2010, 01:12 #8
Цитата Сообщение от Напильнег Посмотреть сообщение
Чебуран-мутант, через формальный параметр - это вообще децл.
Смысл трёх последних слов как-нибудь попроще изложите, если не затруднит...

 Комментарий модератора 
2ALL: Офтопить прекращаем!
0
Напильнег
481 / 119 / 10
Регистрация: 30.09.2010
Сообщений: 473
22.12.2010, 01:56 #9
Децл - это единица измерения безразмерная такая. Означает очень мало, в данном случае - очень просто.

Но это я был не прав - на самом деле твое решение тупо не соответствует условию задачи! Сравни: "функция, которая вызывает себя 10 раз" (сама вызывает, без указивок) и "функция, которая вызывает себя столько раз, сколько скажут" (которой мы говорим, чтобы она вызвала себя 10 раз).

Цитата Сообщение от easybudda Посмотреть сообщение
Офтопить прекращаем!
В каждом хорошем деле есть место шутке юмора. Мы же хорошим делом занимаемся?
0
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
22.12.2010, 03:02 #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
struct recursive
{
public:
   recursive():x(0)
   {
   }
   void print()
   {
       if(x >= 10)
          return;
       cout<<"Recursive call of the function "<< ++x <<'\n';
       print();
   }
private:
   int x;
};
 
int main()
{
    recursive ob;
    ob.print();
    return 0;
}
1
dihlofos
Бродяга
304 / 258 / 17
Регистрация: 27.08.2010
Сообщений: 553
22.12.2010, 09:29 #11
Как вариант, передать количество раз параметром:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
///////////////////////////////////////////
void func(int k)
{
    if (!k)
        return;
        
    cout << "Recursive call" << endl;
    func(--k);
}
///////////////////////////////////////////
int main()
{
    int x = 10;
    func(x);
    
    return 0;
}
0
Напильнег
481 / 119 / 10
Регистрация: 30.09.2010
Сообщений: 473
22.12.2010, 11:58 #12
Еще один чудо-кодер. И куда они все лезут, когда по теме уже я высказался...

ForEveR, сколько раз вызовет себя твой метод, если вызвать его в основной программе второй раз? Ы?

Решение от deadlock обладает тем же недостатком, решение от easybudda вообще условию задачи не удовлетворяет... Мдя, похоже без обработки напильником никак...

Спасибо мне, за то, что я тут есть!

Меня надо слушать!

Путин В.В.
Добавлено через 24 минуты
Цитата Сообщение от dihlofos Посмотреть сообщение
Как вариант, передать количество раз параметром:
Эти грабли уже ломаные выше.
0
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
22.12.2010, 14:28 #13
Напильнег, А не надо вызывать его второй раз) Если создать новый объект и вызвать - то опять же 10)
ЗЫ Все варианты выполняют задание. Через статик переменную это более топорно чем через функцию как у easybudda.
0
dihlofos
22.12.2010, 14:39
  #14

Не по теме:

Цитата Сообщение от Напильнег Посмотреть сообщение
Эти грабли уже ломаные выше.
Ох, ё, и правда...

0
Nameless One
Эксперт С++
5783 / 3432 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
22.12.2010, 14:46 #15
Цитата Сообщение от Напильнег Посмотреть сообщение
deadlock, фи, как не кузяво - через внешнюю переменную каждый второй дурак напишет.

Думается мне, что задача предполагает такое решение:
C++
1
2
3
4
5
6
7
8
9
void func(void)
{
  static unsigned k = 10;
 
  if (k) {
    printf("Recursive call\n");
    k--; func(); k++;
  }
}
k--, k++ - к чему эти "подергивания"? Лучше уж так сделать:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
void tentimes()
{
    static size_t times = 10;
    
    if(!times)
        return;
    
    printf("tentimes function's been called...\n");
    --times;
    
    tentimes();
}
 
int main()
{
    tentimes();
    exit(0);
}
1
22.12.2010, 14:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2010, 14:46
Привет! Вот еще темы с ответами:

что делает size_t в данной функции, и сама функция - C++
string toString() { stringstream buffer; for (size_t i = 0; i &lt; left.size() - 1; i++) buffer &lt;&lt; left &lt;&lt; &quot;,&quot;; buffer &lt;&lt;...

функция возвращающая аргументу его значение сама по себе - C++
Глупость, но не иначе не могу объяснить это явление. гуляя по сайтам наткнулся на пузырьковую сортировку и увидел данный код: void...

Умножить факториал сам на себя 1000000 раз - C++
Нужно умножить факториал сам на себя 1 000 000 раз. Попытался сделать 2 файла, где 1й это вычисление факториала к примеру 5 а второй...

Как вычислить интеграл, если сама функция вычисляется с очень большой погрешностью? (ужасная точность) - C++
Нужно вычислить интеграл. Но как вычислить интеграл, если сама функция вычисляется с очень большой погрешностью. Ошибка? Где? #include...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru