Menulis Fungsi Kuasa Anda Sendiri
Banyak bahasa pengaturcaraan termasuk fungsi kuasa, biasanya dilaksanakan sebagai pow(double x, double y) dalam perpustakaan standard. Walau bagaimanapun, memahami cara menulis fungsi ini dari awal boleh memberikan cerapan yang berharga.
Cabaran
Cabaran utama terletak pada pengendalian eksponen bukan integer dan kuasa negatif. Hanya menggelung sehingga kuasa yang diingini dicapai tidak mencukupi untuk kes ini.
Penyelesaian
Untuk menangani perkara ini, pecahkan eksponen kepada bahagian integer dan rasional. Kira kuasa integer menggunakan gelung, mengambil kesempatan daripada pemfaktoran untuk mengoptimumkan pengiraan. Untuk bahagian rasional, gunakan algoritma seperti pembahagian dua atau kaedah Newton untuk menghampiri punca. Akhir sekali, darabkan keputusan dan gunakan songsang jika eksponen adalah negatif.
Contoh
Pertimbangkan eksponen -3.5. Kami menguraikannya kepada -3 (integer) dan -0.5 (rasional). Kira 2^-3 menggunakan gelung, memfaktorkan 3 menjadi 2 1. Kemudian, anggaran punca 2^(-0.5) menggunakan kaedah lelaran. Keputusan akhir, 1 / (8 * sqrt(2)), diperoleh dengan mendarab dan menyongsangkan keputusan.
Pelaksanaan
Kod Python berikut menunjukkan pendekatan ini :
def power(x, y): # Handle negative exponents if y < 0: return 1 / power(x, -y) # Decompose exponent int_part = int(y) rat_part = y - int_part # Calculate integer power using loop optimization res = 1 while int_part > 0: if int_part % 2 == 1: res *= x x *= x int_part //= 2 # Calculate fractional power using iterative approximation approx = x for i in range(1000): # Iterative steps approx = (approx + x / approx) / 2 # Multiply results and apply inverse if necessary result = res * approx return result if y > 0 else 1 / result
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Fungsi Kuasa daripada Gores, Mengendalikan Kedua-dua Eksponen Integer dan Bukan Integer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!