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

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

Восстановить пароль Регистрация
 
Last_Night
19 / 19 / 0
Регистрация: 02.10.2012
Сообщений: 124
05.02.2013, 00:54     Вычислить рекурсивно функцию #1
Вычислить рекурсивно функцию : S(n)

1, если n=1
S(n/2), если n=2k
S((3n+1)/2),если n=2k+1
не могу понять что такое k и откуда его брать да и вообще проблемы с рекурсией
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Algiz
159 / 159 / 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
159 / 159 / 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++ Написать функцию высветляющую все указатели цикла(рекурсивно)

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

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

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