2017-02-17 2 views
0

bin diese beiden Funktionen, die die gleiche Berechnung "Summieren die ersten N ganzen Zahlen" ausführen dann vergleichen Sie die Laufzeiten für jede. Das Programm funktioniert gut mit kleinen Eingaben, aber das Problem ist, wenn ich große Zahlen wie 1000000 eingabe, berechnet es die erste Methode "die iterativeSum()" dann sobald es die rekursiveSum() erreicht, hört es auf zu arbeiten.C++ Summe große Zahlen, Programm stoppt?

bin nicht sicher, aber denkst du, dass dies wegen der cout sein könnte?

#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) .... 
    } 
} 
+0

Erhalten Sie eine Fehlermeldung? Oder hat das Programm nur eine wirklich lange Laufzeit? BTW: Sie sollten das C++ - Tag zu dieser Frage hinzufügen – Aemyl

+0

keine Fehler auf den Compiler, die Laufzeit ist einfach zu lang, so Windows wird das Programm zu stoppen, sobald es auf die recusiveSum-Methode zu laufen? Euhh ich weiß nicht, wie man C++ Tags hinzufügt, sorry: D – Ivawen

+0

Kein Problem, ich habe es jetzt hinzugefügt (aber Sie müssen die Änderung akzeptieren). – Aemyl

Antwort