PHP 함수, ​​결과가 예상치 못한 결과입니다
黄舟
黄舟 2017-05-24 11:34:32
0
7
774
으아악
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

모든 응답(7)
PHPzhong

콜백 과정을 고려하지 않고 함수 구현 기능을 고려하여 재귀를 이해하세요
재귀를 이해하기 위해 콜백 과정을 고려한다면 전체 재귀 과정에서 매개변수와 변수를 분석하고 언제 호출되는지 기억해야 합니다. 함수를 호출하고 메인 호출 함수로 돌아가는 게 좀 번거로운 것 같아요
.递归求解阶乘일반적으로 사용되는 재귀 함수의 함수는

:

와 같이 잘 설명되어 있습니다. 으아악 计算 n 的阶乘, 函数功能实现就是: n 的阶乘 = n * (n-1)的阶乘함수 함수는 다음과 같습니다.

이렇게 이해하면 재귀 과정에서 함수 호출 문제를 고려할 필요가 없습니다.


해당 함수에 대해:输入 n,输出 n+1, 如果 n+1<5,执行 fun(n+1),再输出 n+1함수 함수는:
(짧은 문장으로 설명하기 어렵습니다):

그래서 함수 설명에 따라 함수의 실행 과정을 알 수 있고, 최종적으로 결과를 얻을 수 있습니다.
  1. fun(1): 输入 1, 输出 2, 2+1<5,执行 fun(2),得到 fun(2)
    출력 결과를 실행하고 2를 출력합니다. 최종 출력

    : 2[output(fun(2))]2
  2. fun(2)마찬가지로
    출력 결과: 3[Output(fun(3))]3 최종 출력

    : 23[Output(fun(3))]32
  3. fun(3)마찬가지로
    출력 결과: 4[Output(fun(4))]4 최종 출력

    : 234[Output(fun(4))] 432
  4. fun(4): 由于 4+1<5 判断失败, 不执行 fun(5)Execution
    , 출력 결과: 55최종 출력

    : 23455432
🎜
伊谢尔伦

재귀적으로 반환되면 이 문장이 거꾸로 출력됩니다

为情所困

함수는 비동기가 아니므로
fun(1)
2 $i++; echo $i;
3 callback func(2) $i++; echo $i;
4 callback func(3) $i++; ;
5 콜백 func(4) $i++; echo $i;
5 콜백 func(4) $i++ 이후에는 이미 5보다 크므로 다음 echo $i(fun(4의 하단 echo $i) ))이 실행됩니다. fun(4) 전체 함수 실행이 종료됩니다.)
4 func(4)의 실행이 완료되었으므로 fun(3)이 계속 실행됩니다. 하단 echo $i
3 2 도 마찬가지입니다. 논리

世界只因有你

Fun 함수가 재귀적일 때 $i 함수의 마지막 문장을 실행하여 4를 출력한 다음 지난번 스택에 푸시되었던 위치로 돌아가서 fun 함수가 완전히 반환될 때까지 계속 3을 출력합니다.
if ($i < 5) { return fun($i);}로 변경하면 23455

이 출력됩니다.
某草草

이 글을 참고하시면 재귀를 이해하시면 이해가 더 쉬울 것입니다. http://www.jianshu.com/p/8bee...

Peter_Zhu

이렇게 생각하시면 됩니다. 이 함수의 기능은 전반부는 i를 에코하고 후반부는 i를 에코하며 i=5까지 중간에 자체 호출이 삽입된다는 것입니다. 이는 i가 5까지 에코되는 것과 동일합니다. , 그리고 처음으로 다시 울려 퍼지는 것은 그만한 가치가 있습니다. 관계를 계속 유지하세요.

仅有的幸福

모두들 고마워요, 이해해요

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!