1樓:你愛我媽呀
#include
using namespace std;
//遞迴實現,效率不高,注意絕對值的取法。演算法複雜度log(n),空間複雜度o(logn)
double getpower(int x, int y)double ret = 0;
bool small = y < 0;
y = (y^(y>>31)) - (y>>31);
if (y == 0) return 1;
if (y == 1) return x;
ret = getpower(x, y >> 1);
ret *= ret;
if (y&1) ret *= x;
return small ? 1.0/ret : ret;
//非遞迴實現,高效率的方式。演算法複雜度log(n),空間複雜度o(1)
double power(int x, int y)double ret = 1;
int sign = y < 0;
y = (y^(y>>31)) - (y>>31);
while (y){
if (y&1) ret *= x;
x *=x;
y >>=1;
return sign ? 1.0/ret : ret;
int main(void)
int x, y;
while (cin >> x >> y){cout << getpower(x, y) << endl;
cout << power(x, y) << endl;
return 0;
2樓:匿名使用者
//樓主,返回值是double吧?萬一y是負數呢?比如2的-1次方,不就是0.5了嗎?
#include
#include //異常所在的標頭檔案.
using namespace std;
double get_power(int x,int y) throw (logic_error)
int main()
catch(exception& exp)}
3樓:匿名使用者
#include
using namespace std;
int getpower(int x,int y)void main()
我沒有編譯,應該能執行吧。
4樓:匿名使用者
別的應該也能實現啊!為啥一定要遞迴呢?
c語言遞迴函式,請用C語言編寫遞迴函式
遞迴函式 程式語言中,函式func type a,直接或間接呼叫函式本身,則該函式稱為遞迴函式。遞迴函式不能定義為行內函數。在數學上,關於遞迴函式的定義如下 對於某一函式f x 其定義域是集合a,那麼若對於a集合中的某一個值x0,其函式值f x0 由f f x0 決定,那麼就稱f x 為遞迴函式。函...
編寫程式自定義的遞迴函式long power int m,i
無語的店鋪 2010 12 2 09 09 提供答案有錯誤我將其修改如下 include long power int m,int n void main 另一解法 include long power int m,int n return y int main 這兩個辦法都可以解決這一個問題 遞迴...
用C 語言編寫程式,遞迴函式,用c 編寫程式用遞迴法計算一個整數的所有數字之和
1 在數學上,關於遞迴函式的定義如下 對於某一函式f x 其定義域是集合a,那麼若對於a集合中的某一個值x0,其函式值f x0 由f f x0 決定,那麼就稱f x 為遞迴函式。在程式語言中,把直接或間接地呼叫自身的函式稱為遞迴函式。函式的構建通常需要一個函式或者一個過程來完成。2 遞迴函式 是建立...