我有一個家庭作業問題,要求寫一個迭代和遞歸組合函數。將它們放置在給定的程序中,以查看哪些花費更長時間C++迭代組合函數不工作
我遇到了迭代函數的問題。我已經多次閱讀並且不斷收到一個mach-o-linker錯誤。我嘗試過很多不同的方式來識別我的變數,但仍然沒有找到任何運氣。
對此主題的任何幫助將不勝感激。我認爲迭代器函數或階乘函數存在問題,但我現在無法在我的生活中看到它。
再次感謝提前
#include <iostream>
#include <sys/time.h>
#include <cstdlib>
using std::cout;
using std::endl;
double iR;
double iN;
typedef unsigned int uint;
uint Factorial(uint n)
{
if (n == 0) return 1;
if (n <= 2) return n;
else return n * Factorial(n - 1);
}
double combination_recursive(double iN, double iR);
double combination_iterative(int iN, int iR);
int main(int argc, const char * argv[]) {
typedef struct timeval time;
time stop, start;
gettimeofday(&start, NULL);
iN = 20.0;
iR = 3.0;
combination_iterative(iN, iR);
gettimeofday(&stop, NULL);
if(stop.tv_sec > start.tv_sec)
cout << "Seconds: " << stop.tv_sec-start.tv_sec << endl;
else
cout << "Micro: " << stop.tv_usec-start.tv_usec << endl;
return 0;
}
double comination_iterative(int, int) {
if (iN == iR) { return 1;}
if (iR == 0 && iN!= 0) { return 1;}
else return (iN * Factorial(iN-1))/Factorial(iN-1)*Factorial(iN-iR);
}
double combination_recursive(double iN, double iR) {
if (iR < 0 || iR > iN) {
return 0;
}
if (iR < 1) {
return 1;
}
if (iN == iR) {
return 1;
}
return combination_recursive(iN - 1, iR) + combination_recursive(iN - 1, iR - 1);
}
歡迎使用stackoverflow。你能把你的例子減少到最低限度嗎?它會改善問題並增加你得到有意義答案的機會。 –
可否請您將您的錯誤從您的錯誤控制檯copypasted? – nio
注意:全局變量'iN'和'iR'與'combination_recursive'的定義中的函數參數'iN'和'iR'不同。 comination_iterative的定義完全忽略了它的參數,並使用全局的'iN'和'iR'。 – aschepler