夥計們我正在爲學習目的而研究叫做LINT(large int)的類,一切都很順利,直到知道。我堅持實施operator /(const LINT &)。這裏的問題是,當我想除以林特我進入遞歸調用FNC即林特:大整數除以大整數
//unfinished
LINT_rep LINT_rep::divide_(const LINT_rep& bottom)const
{
typedef LINT_rep::Iterator iter;
iter topBeg = begin();
iter topEnd = end();
iter bottomBeg = bottom.begin();
iter bottomEnd = bottom.end();
LINT_rep topTmp;//for storing smallest number (dividend) which can be used to divide by divisor
while (topBeg != topEnd)
{
topTmp.insert_(*topBeg);//Number not large enough add another digit
if (topTmp >= bottom)
{//ok number >= we can divide
LINT_rep topShelf = topTmp/bottom;//HERE I'M RUNNING INTO TROUBLE
}
else
{
}
++topBeg;
}
return LINT_rep("-1");//DUMMY
}
我試圖做的是要實現這個,如果我會被劃分這些數字手,因此,例如具有用於紅利1589和除數27,我會去像這樣:
- 檢查,如果第一個數字是> =除數並且如果是這樣劃分
- 如果不添加到第一個數字另一個數字並檢查a> b
在某些時候它會更大(在簡化的情況下),如果是的話,我必須劃分,但在這種情況下,我正在運行遞歸調用,我不知道如何打破它。
一個注意:作爲一個tmp我不得不使用LINT而不是int,因爲這些數字我不適合int。
所以一般我所要求的是有沒有其他的方式來劃分?或者,也許我的思想存在錯誤的邏輯(很可能)。 謝謝。
+1謝謝你的回答,只是咀嚼它。可能需要你的幫助。 – 2010-06-21 10:25:14