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

Пример, подтверждающий что не любую итерацию можно заменить рекурсией - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Интересная сортировка http://www.cyberforum.ru/cpp-beginners/thread172995.html
Дан вектор.Сжать существующий вектор,удалив все отрицательные элементы,не используя дополнительный вектор. Огромная,просьба напишите,как можно проще,просто начинающий.
C++ Треугольниз из звезд Нада программа которая через цикли делает треугольник ******* * * * * * Примерно такой главное что б был пустым и конец был вниз) как с заполниним знаю а пустой никак не могу сделать http://www.cyberforum.ru/cpp-beginners/thread172979.html
ошибка C++
в чем моя ошибка , уже и так и сяк переставляла а компиль подчеркивает..... m и n в int mni, int max и подчеркивает вторую скобку в void sedlo(double mas) вот код #include "stdafx.h" #include <iostream> #include <Windows.h> #include <math.h> using namespace std; void sedlo( double mas) { int i,j,s;
C++ Используя перегрузку, написать функцию для выполнения приведения типов
Используя перегрузку, написать функцию для выполнения, приведения типов, для следующих типов данных float, int, double, long.
C++ Какое минимальное количество спичек нужно для того, чтобы построить в пространстве N кубов со стороной в одну спичку http://www.cyberforum.ru/cpp-beginners/thread172918.html
Какое минимальное количество спичек нужно для того, чтобы выложить на плоскости N квадратов со стороной в одну спичку? Какое минимальное количество спичек нужно для того, чтобы построить в пространстве N кубов со стороной в одну спичку?
C++ Найти номера строк и столбцов всех Седловых точек матрицы Дана целочисленная прямоугольная матрица. Определить: 1.) сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент; 2.) номера строк и столбцов всех Седловых точек матрицы. void main() { const int m=4, n=5; int a; int l = 1; int i,j; for (i=0; i < m; i++) подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
07.10.2010, 16:39     Пример, подтверждающий что не любую итерацию можно заменить рекурсией
Цитата Сообщение от odip Посмотреть сообщение
Насчет что любой цикл можно представить в виде рекурсии - чего-то я не уверен
C
1
2
3
4
double s= 0.0;
for ( i= 0; i<=1000000; i++ ) {
   s+= sin( i );
}
Ну-ка сделайте мне это в виде рекурсии и чтобы ПОСЧИТАЛО !
C
1
2
3
4
5
6
7
8
9
double rec(double result, size_t start, size_t end)
{
    if(start > end)
        return result;
    return rec(result + sin(start), ++start, end);
}
 
//...Вызов функции
double s = rec(0, 0, 1000000);
Между прочим, рекурсия не простая, а хвостовая

Еще вариант:
C
1
2
3
4
5
6
7
8
double rec(size_t start, size_t end)
{
    if(start > end)
        return 0;
    return sin(start) + rec(++start, end);
}
//...
double s = rec(0, 1000000);
 
Текущее время: 15:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru