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

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

Восстановить пароль Регистрация
 
EdDo
0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 15
26.05.2013, 14:43     Рекурсивная функция #1
Написать рекурсивную фукцию вычисления Рекурсивная функция
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 14:43     Рекурсивная функция
Посмотрите здесь:

C++ Рекурсивная функция[]
Рекурсивная функция C++
C++ рекурсивная функция
C++ Рекурсивная функция
Рекурсивная функция C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 1
26.05.2013, 15:12     Рекурсивная функция #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 int main()
{
 setlocale(LC_ALL,"RUSSIAN");
 int n,result=1;
 cout<<"Количество элементов в массиве: ";
 cin>>n;
 int *p=new int[n];
 cout<<"Введите элементы массива: ";
 for(int i=0;i<n;i++)
 {
    cin>>p[i];
 }
 for(int i=0;i<n;i=i+2)
 {
    result*=p[i];
 }
 cout<<"Результат: "<<result<<endl;
 system("pause");
 return 0;
 }
если я правильно понял то посчитать произведение четных элементов массива.
EdDo
0 / 0 / 0
Регистрация: 26.05.2013
Сообщений: 15
26.05.2013, 16:41  [ТС]     Рекурсивная функция #3
Это не совсем то, нет рекурсии, и находится произведение не четных элементов, а элементов с четным индексом
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 1
26.05.2013, 17:50     Рекурсивная функция #4
Цитата Сообщение от Miwa123 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 int main()
{
 setlocale(LC_ALL,"RUSSIAN");
 int n,result=1;
 cout<<"Количество элементов в массиве: ";
 cin>>n;
 int *p=new int[n];
 cout<<"Введите элементы массива: ";
 for(int i=0;i<n;i++)
 {
    cin>>p[i];
 }
 for(int i=1;i<n;i=i+2)//вот тебе начинаем со 2ого элемента и с каждой итерацией индекс +2.
 {
    result*=p[i];
 }
 cout<<"Результат: "<<result<<endl;
 system("pause");
 return 0;
 }
если я правильно понял то посчитать произведение четных элементов массива.
я ума не приложу зачем сюда рекурсию. можно запихнуть... но код более громоздкий и менее быстрый станет
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,180
Завершенные тесты: 1
26.05.2013, 18:11     Рекурсивная функция #5
C++
1
2
3
4
5
6
7
8
9
10
int proizv(int *a,int n)
{
    if(n==0)
    {
        if(a[0]%2==0)return a[0];
        else return 1;
    }
    if(a[n]%2==0)
        return a[n]*proizv(a,n-1);
}
Добавлено через 15 минут
чуть-чуть недописал.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int proizv(int *a,int n)
{
    if(n==0)
    {
        if(a[0]%2==0)return a[0];
        else return 1;
    }
    if(a[n]%2==0)
        return a[n]*proizv(a,n-1);
    else
       return proizv(a,n-1);
 
}
_Mutex
Заблокирован
26.05.2013, 19:03     Рекурсивная функция #6
Цитата Сообщение от EdDo Посмотреть сообщение
Это не совсем то, нет рекурсии, и находится произведение не четных элементов, а элементов с четным индексом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int func(const int*& init,const int& size)throw(){ 
    int result=1;
    if(size-1!=0)result=func(init,size-1);
    if(size-1!=0&&(size-1)%2==0)result*=init[size-1]; 
    return result;
};
 
int main(){
   const int * arr=new int[7]{1,2,5,4,6,7,8};
   int result= func(arr,7);
   cout<<result; 
   return 0;
};
Yandex
Объявления
26.05.2013, 19:03     Рекурсивная функция
Ответ Создать тему
Опции темы

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