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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
#1

Рекурсивные функции - C++

19.03.2011, 12:59. Просмотров 1987. Ответов 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <iostream>
using namespace std;
int factorial(int n);
int main(void)
{
    const int m=8;
    int x=1,i;
    unsigned int *MAS;
    MAS=new unsigned int [m];
    
    for(i=0;i<8;i++)
    {
        MAS[i]=(x++)*2;
        printf(" %d",MAS[i]);
    }
    return 0;
}
int factorial(int n)
{  
    unsigned int *MAS;
    n=16;
    const int m=8;
    unsigned int *MAS2;
    MAS2=new unsigned int [m];
    
    for(int i=0;i<8;i++)
    {
     if(MAS[i]>1)
     {
         MAS2[i]=(MAS[i])*(factorial(n-1));
         printf(" %d",MAS2[i]);
         
     }
     else
     {
         MAS2[i]=1;
     }
    }
    
    return 0;
}
как работают рекурсивные функции ?
0
Миниатюры
Рекурсивные функции  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2011, 12:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рекурсивные функции (C++):

Рекурсивные и не рекурсивные функции (вычисление суммы всех натуральных чисел от 1 до n) - C++
Всем привет. Заранее извиняюсь за мб глупые вопросы и навязчивость. Но у меня есть одна просьба. Помогите пожалуйста написать...

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

Рекурсивные функции. - C++
с самой функцией нет проблем проблема в самой программе задание звучит так Для заданных двух натуральных числа m и n найти НОД(m, n) и...

Рекурсивные функции - C++
Написать рекурсивную функцию для вычисления максимального элемента массива из n элементов, цикл не использовать. Показать пример...

рекурсивные функции - C++
Величайшие умы форума помагите пожалуйсто) Задание:Используя рекурсивную функцию, найдите n-й член арифметической прогрессии с...

Рекурсивные функции - C++
Плиз, помогите. Ошибку выдает, а исправить как - непонятно... Пока не очень понимаю рекурсивные функции... Составить программу,...

10
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,775
19.03.2011, 13:19 #2
Это же классика жанра!
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <stdint.h> // ANSI C 99. Как в мелкомягких компиляторах длинные числа пишутся - см. MSDN
 
uint64_t fact(uint64_t num) { return num < 2 ? 1 : num * fact(num - 1); }
 
int main(void){
    uint64_t num;
    
    while ( printf("Number: ") && scanf("%llu", &num) == 1 )
        printf("Factorial: %llu\n", fact(num));
    
    return 0;
}
1
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
19.03.2011, 13:49  [ТС] #3
Спасибо но мне не понятно это я на 1 курсе еще.
Вот в моей програме что то неправильно и я хочу понять .
0
Kastaneda
Форумчанин
Эксперт С++
4655 / 2863 / 228
Регистрация: 12.12.2009
Сообщений: 7,274
Записей в блоге: 2
Завершенные тесты: 1
19.03.2011, 13:51 #4
Цитата Сообщение от Steam.dll Посмотреть сообщение
как работают рекурсивные функции ?
должно помочь
1
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
19.03.2011, 15:12  [ТС] #5
Вроде понял а с заданием справится не могу. Помогите.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
19.03.2011, 15:25 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Не совсем рекурсия но все же)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
template<int N>
struct fac
{
    static const int fact=N*fac<N-1>::fact;
};
 
template<>
struct fac<0>
{
    static const int fact=1;
};
 
int main()
{
    std::cout<<fac<5>::fact<<'\n';
}
3
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
19.03.2011, 15:30  [ТС] #7
У меня почему то компелятор ошибок много выдаёт
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
19.03.2011, 15:36 #8
Steam.dll, Что за компилятор? Пример ошибки в студию.

Добавлено через 4 минуты
Решение на Си.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
typedef unsigned long int value_type;
 
value_type factorial(int n)
{
    return n < 0 ? 0 : n < 2 ? 1 : n*factorial(n-1);
}
 
int main()
{
    int n=0;
    printf("Enter n: ");
    scanf("%lu", &n);
    value_type fact=0;
    int i=2;
    for(i; i<=n; i+=2)
        fact+=factorial(i);
    printf("%lu\n", fact);
    return 0; 
}
1
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
19.03.2011, 16:47  [ТС] #9
Спасибо большое.

Добавлено через 23 минуты
А вот еще вопрос а тип данных "%lu" это long int ?
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
19.03.2011, 16:50 #10
Steam.dll, unsigned long по умолчанию является unsigned long int.
1
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
19.03.2011, 23:01  [ТС] #11
спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2011, 23:01
Привет! Вот еще темы с ответами:

рекурсивные функции - C++
помогите ррешить!!!!! на С++ Записать алгоритм Евклида вычисления наибольшего общего делителя (НОД) как рекурсивную функцию. Алгоритм...

Рекурсивные функции - C++
в функции мейн обьявить двумерный массив размером A заполнить случайным образом 1 и 2, вывести масив на экран написать рекурсивную...

рекурсивные функции - C++
1. Найти НОД (наибольший общий делитель) двух натуральных чисел. 2. В одномерном массиве, состоящем из n целых элементов, вычислить номер...

рекурсивные функции - C++
Дано натуральные числа n,m ; найти НОД(наибольший общий делитель) . Использовать программу, которая содержит рекурсивную процедуру...


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
19.03.2011, 23:01
Ответ Создать тему
Опции темы

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