編寫遞迴函式GetPower int x,int y ,計算x的y次冪,在主程式中實現輸入輸出用c 相關知識解答)

時間 2021-10-30 06:20:43

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 遞迴函式 是建立...