PHP 재귀 기능의 예기치 않은 출력 : 간단한 추가 기능이 '8'대신 '85'를 인쇄하는 이유는 무엇입니까?
PHP 재귀 기능에 대한 자세한 설명 : 추가 기능의 예기치 않은 출력 분석
이 기사는 PHP 재귀 기능의 예를 분석하여 출력 결과가 기대치와 일치하지 않는 이유를 설명합니다. 코드는 다음과 같습니다.
php 함수 sd ($ a = 3, $ b = 2) { $ c = $ a $ b; if ($ c
함수 sd()
두 개의 매개 변수 a
와 b
허용하고 기본값은 각각 3과 2입니다. 함수는 a
와 b
의 합을 계산하고 값을 c
에 할당합니다. c
6 미만인 경우 재귀 적으로 스스로 호출하고 a
와 새로운 c
값을 매개 변수로 전달하십시오. 마지막으로 함수는 c
의 값을 인쇄합니다.
sd()
실행 한 후 출력 결과는 예상 "8"보다는 "85"입니다. 이는 echo
호출 순서를 이해하는 데 편견이 있기 때문입니다.
프로그램 실행 프로세스는 다음과 같습니다.
-
sd()
에 대한 첫 번째 호출은a=3
,b=2
,c = 3 2 = 5
라고합니다.c 이므로 함수는 자체를 재귀 적으로 호출하고 매개 변수는 <code>sd(3, 5)
가됩니다. - 재귀 호출에서
a=3
,b=5
,c = 3 5 = 8
. 이때c >= 6
, 재귀는 종료됩니다.echo $c;
인쇄 8. - 프로그램은 첫 번째 통화
sd()
호출되는 위치로 돌아갑니다.echo $c;
첫 번째 호출 (5)에서c
값을 인쇄합니다.
따라서 최종 출력은 "85"입니다. 변수 c
덮어 쓰지 않은 것이 아니라 echo
문이 함수의 끝에 있고 재귀가 끝날 때마다 실행되므로 두 개의 인쇄물이 생깁니다.
결과 "8"을 얻으려면 if
조건 문에 echo
명령문을 배치하거나 재귀 종료시에만 최종 결과를 인쇄하는 것과 같은 기능 논리를 수정해야합니다. 수정 된 코드는 다음과 같습니다.
php 함수 sd ($ a = 3, $ b = 2) { $ c = $ a $ b; if ($ c
이 수정 된 버전은 return
문을 사용하여 c
의 값을 반환하여 재귀가 끝난 후에 만 최종 결과가 인쇄되도록합니다.
위 내용은 PHP 재귀 기능의 예기치 않은 출력 : 간단한 추가 기능이 '8'대신 '85'를 인쇄하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

상위 카테고리 아카이브 페이지에 자식 카테고리를 표시하는 방법을 알고 싶습니까? 분류 아카이브 페이지를 사용자 정의 할 때 방문자에게 더 유용하기 위해이를 수행해야 할 수도 있습니다. 이 기사에서는 부모 카테고리 아카이브 페이지에 자식 카테고리를 쉽게 표시하는 방법을 보여줍니다. 하위 범주가 부모 카테고리 아카이브 페이지에 나타나는 이유는 무엇입니까? 부모 카테고리 아카이브 페이지에 모든 자식 카테고리를 표시하면 방문자에게 덜 일반적이고 유용 할 수 있습니다. 예를 들어, 책에 대한 WordPress 블로그를 실행하고 "테마"라는 분류법을 가지고 있다면 독자가 할 수 있도록 "소설", "논픽션"과 같은 하위 세포 체질을 추가 할 수 있습니다.

MySQL을 우아하게 설치하는 열쇠는 공식 MySQL 저장소를 추가하는 것입니다. 특정 단계는 다음과 같습니다. 피싱 공격을 방지하기 위해 MySQL 공식 GPG 키를 다운로드하십시오. MySQL 리포지토리 파일 추가 : rpm -uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm yum repository cache : yum 업데이트 설치 mysql : yum 설치 mysql-server startup startup mysql 서비스 : systemctl start mysqlctl start mysqlctl.

Centos는 2024 년에 상류 분포 인 RHEL 8이 종료 되었기 때문에 폐쇄 될 것입니다. 이 종료는 CentOS 8 시스템에 영향을 미쳐 업데이트를 계속받지 못하게합니다. 사용자는 마이그레이션을 계획해야하며 시스템을 안전하고 안정적으로 유지하기 위해 Centos Stream, Almalinux 및 Rocky Linux가 포함됩니다.

Oracle SQL 문의 핵심은 다양한 조항의 유연한 적용뿐만 아니라 선택, 삽입, 업데이트 및 삭제입니다. 인덱스 최적화와 같은 진술의 실행 메커니즘을 이해하는 것이 중요합니다. 고급 사용에는 하위 쿼리, 연결 쿼리, 분석 기능 및 PL/SQL이 포함됩니다. 일반적인 오류에는 구문 오류, 성능 문제 및 데이터 일관성 문제가 포함됩니다. 성능 최적화 모범 사례에는 적절한 인덱스를 사용하고 선택 *을 피하고 조항을 최적화하고 바운드 변수를 사용하는 것이 포함됩니다. Oracle SQL을 마스터하려면 코드 쓰기, 디버깅, 사고 및 기본 메커니즘 이해를 포함한 연습이 필요합니다.

Intellij에서 ...

MongoDB에 연결하기위한 주요 도구는 다음과 같습니다. 1. MongoDB 쉘, 데이터를 신속하게보고 간단한 작업을 수행하는 데 적합합니다. 2. 언어 드라이버 (Pymongo, MongoDB Java 드라이버, MongoDB Node.js 드라이버 등)는 응용 프로그램 개발에 적합하지만 사용 방법을 마스터해야합니다. 3. GUI 도구 (예 : Robo 3T, Compass)는 초보자를위한 그래픽 인터페이스와 빠른 데이터보기를 제공합니다. 도구를 선택할 때는 응용 프로그램 시나리오 및 기술 스택을 고려하고 연결 문자열 구성, 권한 관리 및 연결 풀 및 인덱스 사용과 같은 성능 최적화에주의를 기울여야합니다.

Docker는 Linux 커널 기능을 사용하여 효율적이고 고립 된 응용 프로그램 실행 환경을 제공합니다. 작동 원리는 다음과 같습니다. 1. 거울은 읽기 전용 템플릿으로 사용되며, 여기에는 응용 프로그램을 실행하는 데 필요한 모든 것을 포함합니다. 2. Union 파일 시스템 (Unionfs)은 여러 파일 시스템을 스택하고 차이점 만 저장하고 공간을 절약하고 속도를 높입니다. 3. 데몬은 거울과 컨테이너를 관리하고 클라이언트는 상호 작용을 위해 사용합니다. 4. 네임 스페이스 및 CGroup은 컨테이너 격리 및 자원 제한을 구현합니다. 5. 다중 네트워크 모드는 컨테이너 상호 연결을 지원합니다. 이러한 핵심 개념을 이해 함으로써만 Docker를 더 잘 활용할 수 있습니다.

가상 통화 가격 상승의 요인은 다음과 같습니다. 1. 시장 수요 증가, 2. 공급 감소, 3. 긍정적 인 뉴스, 4. 낙관적 시장 감정, 5. 거시 경제 환경; 감소 요인에는 다음이 포함됩니다. 1. 시장 수요 감소, 2. 공급 증가, 3. 부정적인 뉴스의 파업, 4. 비관적 시장 감정, 5. 거시 경제 환경.
