母牛生仔的递归算法和非递归算法。
//一只母牛,第二年底生一只母牛和一只公牛,第三年底生一只母牛 ,第五年开始母牛会死。公牛也只能活四年。请问一个农场开始只有一只刚出生的母牛,N年后一共有多少只牛。 //请写一个函数输出结果,用递归和非递归两种方法来实现. function cowrecursion($i) { if ($i == 1) //如果是第一年,则1头牛。 { return 1; } elseif ($i == 2) { return 2 + cowrecursion(1); //第一母牛和儿子们+第二母牛第一年 } elseif ($i == 3) { return 2 + cowrecursion(2) + cowrecursion(1); //第一母牛和儿子们+第二母牛第二年 +第三母牛第一年 } elseif ($i ==4) { return 2 + cowrecursion(3) + cowrecursion(2); //第一母牛和儿子们+第二母牛第三年 +第三母牛第二年 } // elseif ($i == 5) // { // return cowrecursion(4) + cowrecursion(3); //第一母牛死了。公牛也死了。第二母牛第四年 +第三母牛第三年 // } elseif ($i >= 5) { return cowrecursion($i-1) + cowrecursion($i-2); } } //非递归方式实现 function cow_norecursion($i) { //实现思路,用数组来存储,value的值表示年限。循环加1. $cows = array(1); //第一年,1头母牛。 $cowsmale = array(); //用于存储公牛 for ($j=0;$j $value) { switch($cows_copy[$key]) { case 1: break; case 2: $cows_copy[] = 1; $cowsmale[] = 1; break; case 3: $cows_copy[] = 1; break; case 4: break; case 5: unset($cows_copy[$key]); break; } } $cows = $cows_copy; array_walk($cows, function(&$value, $index){ if ($value > 0) $value++; }); $cowsmale_copy = $cowsmale; //循环公牛 foreach ($cowsmale as $d => $value) { $cowsmale_copy[$d]++; if ($cowsmale_copy[$d] == 5) //到第四年就死了 { unset($cowsmale_copy[$d]); } } $cowsmale = $cowsmale_copy; } return count($cows) + count($cowsmale); } echo "<br>list totol--->".cow_norecursion(26); echo "<br>totol recursion--->".cowrecursion(26);
//end
以上就介绍了母牛生仔的递归算法和非递归算法。,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Penggunaan pulangan dalam bahasa C ialah: 1. Untuk fungsi yang jenis nilai pulangannya adalah batal, anda boleh menggunakan pernyataan pulangan untuk menamatkan pelaksanaan fungsi lebih awal 2. Untuk fungsi yang jenis nilai pulangannya tidak batal, fungsi bagi penyataan pulangan adalah untuk menamatkan pelaksanaan fungsi Hasilnya dikembalikan kepada pemanggil 3. Menamatkan pelaksanaan fungsi lebih awal, kita boleh menggunakan penyataan pulangan untuk menamatkan pelaksanaan fungsi lebih awal jika fungsi tidak mengembalikan nilai.

Kod sumber: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}akhirnya{x=3;}}}# Output Output kod di atas hanya boleh membuat kesimpulan: return dilaksanakan sebelum akhirnya. Mari kita lihat apa yang berlaku pada tahap bytecode. Yang berikut memintas sebahagian kod bait kaedah case1 dan membandingkan kod sumber untuk menganotasi maksud setiap arahan dalam

Gula sintaks persediaan Vue3.2 ialah gula sintaks masa kompilasi yang menggunakan gabungan API dalam satu komponen fail (SFC) untuk menyelesaikan persediaan yang rumit dalam Vue3.0 Pembolehubah, fungsi dan kandungan yang diisytiharkan yang diperkenalkan oleh import didedahkan melalui pulangan, supaya ia boleh digunakan dalam Vue3.0 Masalah dalam penggunaan 1. Tidak perlu mengembalikan pembolehubah yang diisytiharkan, fungsi dan kandungan yang diperkenalkan semasa penggunaan Anda boleh menggunakan gula sintaksis //import kandungan yang diperkenalkan import{getToday }from'./utils'//variable constmsg='Hello !'//function function

Penggunaan pulangan dalam JavaScript memerlukan contoh kod khusus Dalam JavaScript, pernyataan pulangan digunakan untuk menentukan nilai yang dikembalikan daripada fungsi. Ia bukan sahaja boleh digunakan untuk menamatkan pelaksanaan fungsi, ia juga boleh mengembalikan nilai ke tempat di mana fungsi itu dipanggil. Pernyataan pulangan mempunyai kegunaan biasa berikut: Mengembalikan nilai Pernyataan pulangan boleh digunakan untuk mengembalikan nilai ke tempat di mana fungsi dipanggil. Berikut ialah contoh mudah: functionadd(a,b){

Fungsi JavaScript menyediakan dua antara muka untuk berinteraksi dengan dunia luar Parameter berfungsi sebagai pintu masuk untuk menerima maklumat luaran berfungsi sebagai saluran keluar untuk menyalurkan kembali hasil operasi kepada dunia luar. Artikel berikut akan membawa anda memahami nilai pulangan fungsi JavaScript dan menganalisis secara ringkas penggunaan penyata pulangan saya harap ia akan membantu anda!

Cara menggunakan return dalam JavaScript memerlukan contoh kod khusus Dalam JavaScript, return ialah kata kunci yang sangat penting Ia biasanya digunakan untuk mengembalikan nilai dalam fungsi atau menamatkan pelaksanaan fungsi. Pernyataan pulangan digunakan untuk mengembalikan nilai kepada pemanggil fungsi dan menamatkan pelaksanaan fungsi. Pernyataan pulangan boleh digunakan di mana-mana dalam fungsi dan boleh mengembalikan sebarang jenis data JavaScript, termasuk nombor, rentetan, boolean,

Penggunaan pulangan nilai pulangan Python ialah apabila fungsi melaksanakan pernyataan pulangan, pelaksanaan akan berhenti serta-merta dan nilai yang ditentukan akan dikembalikan ke tempat di mana fungsi itu dipanggil. Penggunaan terperinci: 1. Kembalikan nilai tunggal; 2. Kembalikan berbilang nilai;

Ya, blok akhirnya dilaksanakan walaupun selepas pernyataan pulangan dalam kaedah. Di Java, blok akhirnya akan dilaksanakan tanpa mengira sama ada pengecualian berlaku. Jika kita memanggil kaedah System.exit() secara eksplisit dalam blok akhirnya, maka hanya kaedah itu tidak akan dilaksanakan. Terdapat situasi yang jarang berlaku di mana akhirnya tidak akan dilaksanakan, seperti ranap JVM, kegagalan kuasa, ranap perisian, dll. Kecuali untuk kes ini, blok akhirnya akan sentiasa dilaksanakan. Contoh publicclassFinallyBlockAfterReturnTest{ publicstaticvoidmain(St
