Recursive and non-recursive algorithms for cows giving birth.
//一只母牛,第二年底生一只母牛和一只公牛,第三年底生一只母牛 ,第五年开始母牛会死。公牛也只能活四年。请问一个农场开始只有一只刚出生的母牛,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<$i;$j++) //循环多少年 { //循环母牛 $cows_copy = $cows; foreach ($cows as $key => $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
The above introduces the recursive algorithm and non-recursive algorithm for cows to give birth. , including relevant content, I hope it will be helpful to friends who are interested in PHP tutorials.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The usage of return in C language is: 1. For functions whose return value type is void, you can use the return statement to end the execution of the function early; 2. For functions whose return value type is not void, the function of the return statement is to end the execution of the function. The result is returned to the caller; 3. End the execution of the function early. Inside the function, we can use the return statement to end the execution of the function early, even if the function does not return a value.

Source code: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}#Output The output of the above code can simply conclude: return is executed before finally. Let's take a look at what happens at the bytecode level. The following intercepts part of the bytecode of the case1 method, and compares the source code to annotate the meaning of each instruction in

Vue3.2 setup syntax sugar is a compile-time syntax sugar that uses the combined API in a single file component (SFC) to solve the cumbersome setup in Vue3.0. The declared variables, functions, and content introduced by import are exposed through return, so that they can be used in Vue3.0. Problems in use 1. There is no need to return declared variables, functions and content introduced by import during use. You can use syntactic sugar //import the content introduced import{getToday}from'./utils'//variable constmsg='Hello !'//function func

Usage of return in JavaScript requires specific code examples In JavaScript, the return statement is used to specify the value returned from a function. Not only can it be used to end the execution of a function, it can also return a value to the place where the function was called. The return statement has the following common uses: Return a value The return statement can be used to return a value to the place where the function is called. Here is a simple example: functionadd(a,b){

JavaScript functions provide two interfaces to interact with the outside world. The parameters serve as the entrance to receive external information; the return value serves as the outlet to feed back the operation results to the outside world. The following article will take you to understand the JavaScript function return value and briefly analyze the usage of the return statement. I hope it will be helpful to you!

How to use return in JavaScript requires specific code examples. In JavaScript, return is a very important keyword. It is usually used to return a value in a function or end the execution of a function. The return statement is used to return a value to the caller of the function and terminate the execution of the function. The return statement can be used anywhere in a function and can return any JavaScript data type, including numbers, strings, booleans,

Python return value return usage is that when the function executes the return statement, execution will stop immediately and the specified value will be returned to the place where the function was called. Detailed usage: 1. Return a single value; 2. Return multiple values; 3. Return a null value; 4. End the execution of the function early.

Yes, the finally block is executed even after the return statement in the method. In Java, the finally block will be executed regardless of whether an exception occurs. If we explicitly call the System.exit() method in the finally block, then only it will not be executed. There are rare situations where finally will not be executed, such as JVM crash, power failure, software crash, etc. Except for these cases, the finally block will always be executed. Example publicclassFinallyBlockAfterReturnTest{ publicstaticvoidmain(St
