찾다

 >  Q&A  >  본문

PHP 함수, ​​결과가 예상치 못한 결과입니다

으아악
黄舟黄舟2821일 전825

모든 응답(7)나는 대답할 것이다

  • PHPz

    PHPz2017-05-24 11:36:32

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

    :

    와 같이 잘 설명되어 있습니다. 으아악 计算 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
    🎜

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-24 11:36:32

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

    회신하다
    0
  • 为情所困

    为情所困2017-05-24 11:36:32

    함수는 비동기가 아니므로
    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 도 마찬가지입니다. 논리

    회신하다
    0
  • 世界只因有你

    世界只因有你2017-05-24 11:36:32

    Fun 함수가 재귀적일 때 $i < 5를 만족한다고 판단되면 자신을 호출하여 스택에 푸시함과 동시에 함수의 마지막 문장인 echo $i는 실행되지 않습니다. ; 재귀 호출이 $i = 5에 도달하면 함수의 이전 스택 포인트로 돌아가서 실행을 계속합니다. 즉, echo $i;
    함수의 마지막 문장을 실행하여 4를 출력한 다음 지난번 스택에 푸시되었던 위치로 돌아가서 fun 함수가 완전히 반환될 때까지 계속 3을 출력합니다.
    if ($i < 5) { return fun($i);}로 변경하면 23455

    이 출력됩니다.

    회신하다
    0
  • 某草草

    某草草2017-05-24 11:36:32

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

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-05-24 11:36:32

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

    회신하다
    0
  • 仅有的幸福

    仅有的幸福2017-05-24 11:36:32

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

    회신하다
    0
  • 취소회신하다