Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Algorytm Potęgowania
Vengeance
post
Post #1





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Kod
<?php
echo potega();
function potega()
{
  global $zmienna;
  static $wynik=1;
  static $x = 4;
  static $k = 10;
  if($k<>0)
  {
     if(is_int($k/2))
     {
        $k /= 2;
        $x *= $x;
     }
     else
     {
        $wynik *= $x;
        $k--;
     }
     potega();
  }
  else
     return (string)$wynik;
}
?>


Jest to rekurencyjna funkcja do potęgowania napisana wg. jakiegoś tam algorytmu (było takie zadanie na jakieś olimpiadzie czy coś aby taką napisać).

Teraz pytanie. Jak to przerobić abym mógł przekazać podstawe i wykładnik jako parametry funkcji ? Bo przy:
Kod
static $x = $param1;


php robi error o zły T_VARIABLE.

PS> do nabijaczy postów ;] wiem, że istnieje funkcja pow()

Ten post edytował Vengeance 13.08.2004, 01:31:18
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




w takim razie powinno to wyglądać tak:
  1. <?php
  2. function potega( $x , $k, $wynik )
  3. {
  4. if( $k == 0 )
  5. {
  6. return $wynik ;
  7. }
  8.  
  9. if( $k%2 )
  10. { //nieparzysta
  11. $wynik *= $x;
  12. $k--;
  13. }
  14. else
  15. {
  16. $k /=2;
  17. $x *= $x;
  18. }
  19.  
  20. return potega( $x , $k, $wynik );
  21. }
  22.  
  23.  
  24. $a = 2; 
  25. $n = 3;
  26. $wynik = 1;
  27.  
  28. echo potega( $a, $n, $wynik );
  29. ?>


(ale i tak uważam że zadanie jest głupie, a sposób jego przekazania jeszcze głupszy)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 07:40