這道演算法題一般考查的遞迴的程式設計技能,那麼我們回顧下遞迴程式的特點:
1,什麼是遞迴?
遞迴,就是方法內部呼叫方法自身2,這道題該怎麼寫?遞迴的注意事項:
找到規律,編寫遞迴公式
找到出口(邊界值),讓遞迴有結束邊界
注意:如果遞迴太多層,或者沒有正確結束遞迴,則會出現「棧記憶體溢位error」!
問題:為什麼會出現棧記憶體溢位,而不是堆記憶體溢位?
規律:n!=(n-1)!*n;
出口:n==1或n==0 return 1;
public
static
intgetresult
(int n)
if(n==
1|| n==0)
return
getresult
(n-1
)*n;
}
演算法題007 計算n的階乘
n n n 1 n 2 3 2 1 沒有考慮變數表達範圍,假設所得結果用long型表示。這裡需要注意的是0的階乘應該是1.include using namespace std int main int argc,char argv else if n 0 cout result return0 這...
求N階乘的長度
給乙個數x,len log10 x 1就是x這個數的長度 當n的值不超過10 6時 那麼n的階乘長度 log10 1 2 3 4 n 1 log10 1 log10 2 log10 3 log10 4 log10 n 1 include includeint main 當n比較大時,再用上面這種方法...
求n的階乘(10000)
題意 如題目 思路 用乙個陣列,陣列的每一位存乙個8位數,兩個for迴圈,不斷從1開始累乘。include include include include using namespace std const int maxn 100000000 注意不能超過long long 的表示範圍 long ...