| Autor | Zpráva | ||
|---|---|---|---|
| verde Profil * |
#1 · Zasláno: 1. 11. 2008, 11:40:57
Dobré dopoledne vsem,
mám problém s podmínkou, mám čísla -10 -9 ... 0 ... 9 10 mám funkci
function porad($cX, $maxX) {
if($cX >= -($maxX)) {return $cX;}
else {return porad(((2*$maxX)+$cX), $maxX)+1;}
}
$cX je jakékoliv číslo, $maxX je tedy číslo 10, protože největší číslo je 10. když zadám číslo -11, porad(-11, 10); tak se má vrátit číslo největší a to 10, když se zadá číslo -12, tak to vrátí číslo 9, tedy nekonečný kruh čísel -10 až 10. tahle funkce funguje pro záporná čísla, ale ne pro kladná. pro kladná čísla mám funkci
function poradX($cX, $maxX) {
if($cX <= $maxX) {return $cX;}
else {return poradX(($cX-(2*$maxX)), $maxX)-1;}
}
ale nedokážu to zakomponovat do jedný funkce:( asi na to koukám už moc dlouho, byl bych rád za radu, jak sloučit funkce tak, aby to fungovalo pro kladné i záporná čísla, děkuju |
||
| nightfish Profil |
#2 · Zasláno: 1. 11. 2008, 11:57:55
nehledáš něco jako abs
pokud ne, tak napiš, co že ta funkce vlastně má dělat - ze současného popisu se mi to nějak nepodařilo pochopit a přemýšlet nad rekurzivním kódem se mi opravdu nechce |
||
| verde Profil * |
#3 · Zasláno: 1. 11. 2008, 12:48:22
tu rekurzi není třeba vnímat, klidně se může vynechat
function poradX($cX, $maxX) {
if($cX <= $maxX) {return $cX;}
else {return ($cX-(2*$maxX))-1;}
}
ve zkratce jde o to když zadám číslo -11 chci dostat číslo 10 závislosti tedy na $maxX číslu když zadám číslo 11 chci dostat číslo -10 zase závisle na proměnná $maxX |
||
| nightfish Profil |
#4 · Zasláno: 1. 11. 2008, 13:11:02
„když zadám číslo -11 chci dostat číslo 10 závislosti tedy na $maxX číslu
když zadám číslo 11 chci dostat číslo -10 zase závisle na proměnná $maxX“ popis nahouby, zkus to ještě jednou - kam zadáš číslo? v jaké závislosti na $maxX? |
||
| verde Profil * |
#5 · Zasláno: 1. 11. 2008, 17:33:43
zkusím to znovu:-)
máš čísla od -10 do 10, tedy proměnná $maxX obsahuje číslo 10, pokud máš čísla od -20 do 20, tak $maxX je 20. takže předpokládejme, že mám čísla -10 až 10 (-10, -9, -8, ... 8, 9, 10), tedy $maxX obsahuje číslo 10, a já nevím jak sloučit ty funkce tak, aby když dosadí do funkce největší číslo o +1 větší a nejmenší číslo o -1 menší, tedy takto: poradX(11, 10); //výstup by měl být -10 poradX(-11, 10) //výstup by měl být 10 představ si, že čísla jsou do kruhu ...9, 10, -10, -9, .., 0, ..., 9, 10, -10, -9, ... funkce napsané nahoře to řeší, ale jedna se stará o to, že pokud tam je -11, tak tam dá 10 a druhá naopak a já nevím jak to sloučit, aby jedna funkce řešila i záporný i kladný čísla (pozn. rekurze, která nemusí být brána v potaz řeší, pokud se za $cX dá třeba číslo 80) |
||
| BetaCam Profil |
#6 · Zasláno: 1. 11. 2008, 22:45:11
verde
Nestačilo by jednoduše napsat toto :
function poradNew($cX, $maxX) {
if ($cX > 0) {
if($cX <= $maxX) {return $cX;}
else {return poradNew(($cX-(2*$maxX)), $maxX)-1;}
}else{
if($cX >= -($maxX)) {return $cX;}
else {return poradNew(((2*$maxX)+$cX), $maxX)+1;}
}
}
Jinak je pravda, že ten tvůj popis není zrovna výstižný. |
||
| verde Profil * |
#7 · Zasláno: 1. 11. 2008, 23:09:47
funguje krásně, díky
|
||
|
Časová prodleva: 17 let
|
|||
0