Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
 
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
#1

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

10.07.2013, 18:57. Просмотров 992. Ответов 20
Метки нет (Все метки)

Вводим число х. Функция должна вызывать сама себя до тех пор пока sum не станет больше х. Но программа выдает ошибку, Подскажите в чем проблема пожалуйста? Заранее спасибо.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
int fn_sum(int  x)
{
    int n,sum=1,i=n;
    while(sum<x)
    {
        sum=sum+i;
        i++;
        n=i;
        fn_sum(x);
 
    }
        return sum;
}
int main()
{
  int x;
  cin>>x;
  cout<<fn_sum(x);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2013, 18:57     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х)
Посмотрите здесь:

Считать Z до тех пор пока выражение под знаком логарифма больше 0.05 - C++
помогите решить и составить блок схему

Считать S до тех пор, пока выражение под знаком логарифма больше 1. Определить k - количество вычисленных S - C++
Дано: а=2; dа=-0.5. S вычислять по формуле: S=2,79*ln(a^3-a-1) . Считать S до тех пор, пока выражение под знаком логарифма больше 1....

Просматривать массив до тех пор, пока не встретится 0 - C++
Дан массив случайных чисел. Просматривать массив до тех пор, пока не встретится 0, и все четные числа записывать во второй массив. Если в...

Cчитывать строку в консоли до тех пор пока не встретится точка. - C++
Нужно считывать строку в консоли до тех пор пока не встретится точка.

Запрашивать пароль до тех пор, пока он не будет правильно введен - C++
Составить программу, которая запрашивает пароль (например, четырехзначное число) до тех пор, пока он не будет правильно введен.

Ввод произвольных символов до тех пор, пока не будет введен символ q - C++
Написать программу ввода произвольных символов до тех пор, пока не будет введен символ q.

Выводить на экран вводимые символы до тех пор, пока не введен символ <*> - C++
Напишите программу, которая будет выводить на экран вводимые символы до тех пор, пока не введен символ &lt;*&gt;. Доработайте программу таким...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1300 / 637 / 56
Регистрация: 11.08.2011
Сообщений: 2,280
Записей в блоге: 2
Завершенные тесты: 1
10.07.2013, 19:01     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х) #2
Каждый раз, когда ты вызываешь функцию из нее самой, ты передаешь одинаковое значение x. Поэтому, если x > 1 (x > sum), то будет бесконечная рекурсия. Каждый раз будет выполняться условие в while (sum<x), откуда будет вызываться функция.
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
10.07.2013, 19:20  [ТС]     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х) #3
Dani,
Цитата Сообщение от Dani Посмотреть сообщение
Каждый раз, когда ты вызываешь функцию из нее самой, ты передаешь одинаковое значение x.
А я и не хочу менять значени "х", мне нужно, что-бы менялось значение sum, а оно меняется. У меня ведь считается когда sum>x то выход. Если менять на каждой итерации "х", то, что тогда будет я не знаю....

Добавлено через 1 минуту
Dani, так и не понял, что нужно исправить, что бы программа не выдавала ошибку.
Dani
1300 / 637 / 56
Регистрация: 11.08.2011
Сообщений: 2,280
Записей в блоге: 2
Завершенные тесты: 1
10.07.2013, 20:11     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х) #4
Nikko12, ты вызвал функцию. А в цикле while, в который попадаем только 1 раз, вызывается точно такая же функция с параметром x.
C++
1
cout<<fn_sum(x);
в main() тоже что и
C++
1
fn_sum(x);
т.к. x не меняется до вызова.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
10.07.2013, 20:34     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х) #5
я скажи условие задачи, я что-то въехать не могу, что ты вычисляешь?
Thinker
10.07.2013, 20:57
  #6

Не по теме:

Nikko12, и что это такое, где само задание? ну почему жаждущие помощи размещают свои "каракули" и спрашивают: "а что там не так?". схема то очевидна:

1. дано то-то и то-то
2. требуется получить то-то и то-то
3. я сделал это так-то и так-то
4. у меня не получается там-то и там-то...

детский сад и детский лепет...

Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
11.07.2013, 21:23  [ТС]     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х) #7
Thinker, Нет не какого задания, я хотел попробовать реализовать рекурсию, у меня не вышло, обратился сюда за помощью

Добавлено через 1 минуту
soican, Хотел рекурсивно вычислять сумму пока она не превысит введеное число "х".
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.07.2013, 21:25     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х) #8
Цитата Сообщение от Nikko12 Посмотреть сообщение
Нет не какого задания
ну так придумайте задачу, четко сформулируйте, вас поймут, тогда можно надеяться на помощь. как здесь
Побитовые сдвиги
и итерация, и рекурсия, главное, четко задать условия игры.
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
11.07.2013, 21:36  [ТС]     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х) #9
Dani, У меня к Вам несколько вопросов:
1. Почему моя программа завершается с ошибкой?
2. Почему цикл while() вызывается один раз??
3.
Цитата Сообщение от Dani Посмотреть сообщение
А в цикле while, в который попадаем только 1 раз, вызывается точно такая же функция с параметром x
Так ведь она и должна передоваться только с одним параметром, с "х". Иначе как он будет знать до какого числа ему считать сумму?
4.
Цитата Сообщение от Dani Посмотреть сообщение
в main() тоже что и Код C++

fn_sum(x);
Я ведь передаю один раз параметр в функцию, функция выполнила вычисления и вернула результат, поэтому не понимаю, что тут такого страшного???

Добавлено через 41 секунду
Thinker, ВВожу число "х" и передаю его как параметр в функцию, хотел попробовать рекурсивно вычислять сумму до тех пор пока сумма не превысит введеное число "х".
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.07.2013, 02:43     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х) #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int fn_sum(int  x, int sum)
{
    int i = 2;
    while(sum < x)
    {
        sum += 2;
        fn_sum(x, sum);
    }
    return sum;
}
 
int main()
{
    int x;
    cin >> x;
    int sum = 0;
    cout << fn_sum(x, sum);
    return 0;
}
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
12.07.2013, 07:18  [ТС]     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х) #11
alsav22, Спасибо за помощь, но зачем в функцию передавать два параметра??? Почему нельзя обойтись одним?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.07.2013, 14:51     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х) #12
Цитата Сообщение от Nikko12 Посмотреть сообщение
alsav22, Спасибо за помощь, но зачем в функцию передавать два параметра??? Почему нельзя обойтись одним?
Что-то должно меняться чтобы был выход из рекурсии. Если x не меняется, значит sum должна меняться в функции. Можно передавать только x, но тогда x нужно менять в функции, чтобы при определённом значени был выход из рекурсии.
Nikko12
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 162
12.07.2013, 18:11  [ТС]     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х) #13
alsav22, Спасибо.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
12.07.2013, 18:37     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х) #14
Цитата Сообщение от Nikko12 Посмотреть сообщение
Thinker, ВВожу число "х" и передаю его как параметр в функцию, хотел попробовать рекурсивно вычислять сумму до тех пор пока сумма не превысит введеное число "х".
сумму чего ты хочешь вычислять? тот код который тебе написали будут возвращать x(если x четное) или х+1 (если x нечетное)
его вообще можно сделать таким
C++
1
2
3
4
5
int fn_sum(int  x, int sum)
{   while(sum < x)
    {     sum += 2; }
    return sum;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2013, 19:13     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х)
Еще ссылки по теме:

Выполнение цикла до тех пор, пока не будет нажата определенная клавиша - C++
Доброе время суток, люди добрые! Начал заниматься С++ не так давно, поэтому всех хтростей не знаю, в следствие чего прошу о помощи....

Вводить числа в диалоге с пользователем (до тех пор, пока он не откажется от ввода) - C++
Используя в программе цикл while, Вводить числа в диалоге с пользователем (до тех пор, пока он не откажется от ввода). Вывести общее...

Вводить с клавиатуры числа до тех пор, пока не будет нажата клавиша <<ESC>> - C++
Задание: Вводить с клавиатуры числа до тех пор, пока не будет нажата клавиша &lt;&lt;ESC&gt;&gt;. На экран вывести кол-во вводимых чисел. #include...

Реализовать цикл, продолжающийся до тех пор, пока пользователь не даст верный ответ - C++
Привет всем много уважаемые прошу строго не судить изучаю с++ совсем не давно прошу вас помочь вот собственно код программы #include...

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


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

Или воспользуйтесь поиском по форуму:
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6444 / 3083 / 306
Регистрация: 04.12.2011
Сообщений: 8,492
Записей в блоге: 4
12.07.2013, 19:13     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х) #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int theUpperBorder = 10;
int theNuberToAdd  = 2;
 
int add(int a){
if(a + theNuberToAdd > theUpperBorder) return a;
if(a > theUpperBorder) return a-=theNuberToAdd;
if(a == theUpperBorder) return a;
return add(a+=theNuberToAdd);
}
int main ( )
{ 
int a=3;
//не понял к чему и что прибавить, 
//поэтому прибавляю к тому, что есть 2 (охваченный общим порывом))
cout<<add(a)<<endl;
system("pause");
  return 0;
}
Yandex
Объявления
12.07.2013, 19:13     Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х)
Ответ Создать тему
Опции темы

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