Jump to content
php.lv forumi

Recommended Posts

Posted

kā šo var dabūt gatavu bez GLOBAL

Array
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)

Ar Globālo dabūju šādi:

$array;
fff(0);

print_r($array);


function fff($i){
	GlOBAL $array;
	$i++;
	
	if($i<5)  {
		fff($i);
	}
	$array[]=$i;
	return $array;
}

Kā bez globālā? šoreiz svarīgi ir, lai funkcija izsauc citu funkciju.

Posted

Padodot listi kā funckijas parametru.

$array;
$array =fff(0, $arr);
print_r($array);

function fff($i,$array){
	$i++;
	
	if($i<5)  {
		fff($i, $array);
	}
	$array[]=$i;
	return $array;
}

iegūstu:

Array ( [0] => 1 )

rekursīvo daļu neatgriež...

Posted (edited)

$array = array();
$i = 5;

while ($i > 0)
{
    $array[] = $i--;
}

print_r($array);
Bet ja nu šausmīgi vajag rekursīvu funkciju:

$array = array();

function buildArray($i, &$array)
{
    if ($i < 1)
    {
        return;
    }
    
    $array[] = $i--;
    buildArray($i, $array);
};

buildArray(5, $array);
print_r($array);
Šis ir tail-recursive, kam tehniski vajadzētu būt labākam, tiesa, es nezinu, vai PHP to optimizē. Edited by jurchiks
Posted

Tas ir viss, ko tev vajadzēja, bet tu kaut kā iedomājies uzmočīt to kodu, kas ir pirmajā postā? Are you serious?

 

Cilvēks ir iesācējs, viņš nezināja esošu funkciju, kā arī nav praktizējies "google" spēkā. Viņš sāka domāt savu risinājumu, kaut kādā veidā panākt sev vēlamo effektu. Lai arī cik liela pornogrāfija tā nebūtu tomēr viņš mēģina, un Tev kā zinošākam pēc piemēra jau vajadzēja saprast, un piedāvāt gatavu risinājumu.

Don`t blame rookie.

Posted

Nu cmon, neviens iesācējs nekad nemēģina izmantot rekursiju pirms cikla, rekursiju mācās daudz vēlāk par cikliem, un no personīgās pieredzes varu teikt, ka parasti tā vispār nav vajadzīga.

Posted

Tas ir viss, ko tev vajadzēja, bet tu kaut kā iedomājies uzmočīt to kodu, kas ir pirmajā postā? Are you serious?

 

1. Paldies bija domāts nevis ieteikumam izmantot var_dump() funkciju, bet gan jurchika atbildei 4.postā, konkrēti 2.piemērs, visa mana problēma bija tajā, ka nemācēju/nepielietoju šo simbolu "&"

2. Tas, kas ir rakstīts pirmajā postā ir maksimāli vienkāršots man nepiecišamais rezultāts, iespējams, ne visai veiksmīgs, bet tā kā risinājums tika rasts caur piedāvātajām atbildēm, uzskatu, ka rezultāts tika sasniegts;

3. tagad es sapratu, ka solved mārku ieliku nepareizajai atbildei, izlaboju.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...