Я выполняю эти две функции, которые выполняют один и тот же расчет, суммируя первые N целых чисел, а затем сравнивают время выполнения для каждого из них. Программа отлично работает с небольшими входами, но проблема в том, что когда я ввожу большие числа, например 1000000, он вычисляет первый метод «iterativeSum()», после чего, как только он попадает в рекурсивныйSum(), он перестает работать.C++ сумма больших чисел, программные остановки?
Я не уверен, но вы думаете, что это может быть из-за cout?
#include <stdio.h>
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
void iterativeSum(int);
int RecursiveSum(int);
int main()
{
long long posInt;
std::cout << "Enter a positive integer: ";
std::cin >> posInt;
int start_s=clock();
iterativeSum(posInt);
int stop_s=clock();
int start_s1=clock();
cout << "\nThe recursive algorithm to sum the first N integers of "<< posInt << " is: "<< RecursiveSum(posInt) << endl;
int stop_s1=clock();
cout << "time: " << (stop_s-start_s)/double(CLOCKS_PER_SEC)/1000 << endl;
cout << "time: " << (stop_s1-start_s1)/double(CLOCKS_PER_SEC)/1000 << endl;
return 0;
}
void iterativeSum(int posInt)
{
//positive Integer >=0
int sum = 0;
//loop through and get only postive integers and sum them up.
// postcondion met at i = 0
for(int i = 0; i <= posInt;i++)
{
sum +=i;
}
//output the positive integers to the screen
std::cout <<"\nThe iterative algorithm to sum the first N integers of " <<posInt <<" is: " << sum << "\n";
}
int RecursiveSum(int n)
{
if(n == 1) // base case
{
return 1;
}
else
{
return n + RecursiveSum(n - 1); //This is n + (n - 1) + (n - 2) ....
}
}
У вас появляется сообщение об ошибке? Или программа имеет очень длительное время? BTW: вы должны добавить тег C++ к этому вопросу – Aemyl
ошибок нет в компиляторе, время выполнения слишком длинное, поэтому окна останавливают запуск программы, как только она дойдет до метода recusiveSum? euhh, я не знаю, как добавить теги C++, но, извините: D – Ivawen
Нет проблем, я добавил его сейчас (но вы должны принять редактирование). – Aemyl