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

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

Войти
Регистрация
Восстановить пароль
 
Last_Night
19 / 19 / 0
Регистрация: 02.10.2012
Сообщений: 124
#1

Вычислить рекурсивно функцию - C++

05.02.2013, 00:54. Просмотров 430. Ответов 6
Метки нет (Все метки)

Вычислить рекурсивно функцию : S(n)

1, если n=1
S(n/2), если n=2k
S((3n+1)/2),если n=2k+1
не могу понять что такое k и откуда его брать да и вообще проблемы с рекурсией
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2013, 00:54     Вычислить рекурсивно функцию
Посмотрите здесь:

C++ Вычислить сумму рекурсивно
C++ Вычислить значение выражения рекурсивно
Вычислить сумму ряда с позиции N до позиции M. Функцию вычисления суммы реализовать рекурсивно. C++
Рекурсивно описать функцию C(n,m) C++
Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне C++
C++ Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне
Рекурсивно вычислить производную експоненты C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Algiz
160 / 160 / 13
Регистрация: 23.02.2011
Сообщений: 347
05.02.2013, 00:59     Вычислить рекурсивно функцию #2
n=2k - n - четно
n=2k+1 - n - нечетно
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
05.02.2013, 01:02     Вычислить рекурсивно функцию #3
вероятнее всего подразумевается что речь идёт о целых числах и 2k говорит, что n - делится на 2, т.е. чётно, а 2k+1 что нечётно...

так же если допустить, что здесь речь идёт о сумме, а не о просто S как переменная (потому что если там не было знака суммы или чего ещё - задача тривиальна и всегда вернёт 1), если речь о сумме, то так:

C++
1
2
3
4
5
6
int myfunc(int x)
{
   if (x==1) return 1;
   else if (x%2==0) return x+myfunc(x/2);
   else return x+myfunc((3*x+1)/2);
}
Algiz
160 / 160 / 13
Регистрация: 23.02.2011
Сообщений: 347
05.02.2013, 01:03     Вычислить рекурсивно функцию #4
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;
 
int foo(int n){
    if (n == 1)
        return 1;
    if (n % 2 == 0)
        return foo(n / 2);
    else
        return foo((3 * n + 1) / 2);
}
 
int main(){
    int n;
    cin >> n;
    cout << foo(n);
    return 0;
}
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
05.02.2013, 01:07     Вычислить рекурсивно функцию #5
Цитата Сообщение от Algiz Посмотреть сообщение
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;
 
int foo(int n){
    if (n == 1)
        return 1;
    if (n % 2 == 0)
        return foo(n / 2);
    else
        return foo((3 * n + 1) / 2);
}
 
int main(){
    int n;
    cin >> n;
    cout << foo(n);
    return 0;
}
ваша функция полностью аналогична
C++
1
2
3
int foo(int n){
        return 1;
}
Last_Night
19 / 19 / 0
Регистрация: 02.10.2012
Сообщений: 124
05.02.2013, 01:15  [ТС]     Вычислить рекурсивно функцию #6
n=2k - n - четно
n=2k+1 - n - нечетно
это понял просто запутался(( с К
спасибо всем большое
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2013, 18:11     Вычислить рекурсивно функцию
Еще ссылки по теме:

C++ Переписать рекурсивно итерационную функцию.
По заданному X рекурсивно вычислить X^2 C++
C++ Написать функцию высветляющую все указатели цикла(рекурсивно)
Рекурсивно вычислить выражение C++
Вычислить выражение рекурсивно и итеративно C++

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

Или воспользуйтесь поиском по форуму:
Algiz
160 / 160 / 13
Регистрация: 23.02.2011
Сообщений: 347
05.02.2013, 18:11     Вычислить рекурсивно функцию #7
abit, да, но ведь именно это и сказано в условии
Yandex
Объявления
05.02.2013, 18:11     Вычислить рекурсивно функцию
Ответ Создать тему
Опции темы

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