PHP : 누군가이 코드가 어떻게 작동하는지 설명 할 수 있습니까? (피보나치)

StackOverflow https://stackoverflow.com/questions/1811368

  •  06-07-2019
  •  | 
  •  

문제

나는 이것이 숙제가 아니라고 약속합니다. 나는 단지 호기심 많은 초보자입니다.

이것은 어떻게 :

function f($i){return $i<2?$i:f($i-1)+f($i-2);}

(누군가가 똑똑한 사람에 의해 작성)

이와 동일한 결과를 생성합니다

function fibonacci($n, $arr = array(0,1)){
    $arr[] = $arr[(count($arr) - 1)] + $arr[(count($arr) - 2)];
    if (count($arr) == $n) return $arr[$n - 1];
    else return fibonacci($n, $arr);
}

(나의 것)

구문을 얻지 못한다고 생각합니다. 거기에 if 문장이 있습니까?

도움이 되었습니까?

해결책

연산자 "?" Ternary Operator입니다. P1? P2 : P3 P1이 참이면 P2, 그렇지 않으면 P3처럼 사용됩니다.

다른 팁

거기에는 if 문장이 있습니다. a라고합니다 3 배 운영자.

condition ? if true : if false

$ i가 2 미만인 경우 $ i를 반환하면 f ($ i-1) + f ($ i-2)를 반환합니다. 재귀 함수 호출이 이해에 어려움을 겪고있는 것이 아니라고 가정하고 있다면 Google에 대한 재귀적인 Fibonacci 코드의 예가 많이 있습니다.

첫 번째 함수는 속기입니다. 여기가하는 일이 있습니다

if($i < 2) { // $i < 2 ?
  return $i;
}
else { // :
  return f($i-1)+f($i-2);
}

2 미만이면 함수를 리콜 할 필요가 없습니다. 2 이상이면 기능이 재귀 적으로 호출됩니다.

물음표는 조건부 표현입니다.

x ? a : b

평가합니다 a 만약에 x 사실입니다 b 거짓이라면.

function f($i){return $i<2?$i:f($i-1)+f($i-2);}

수단

function f($i)
{
    if $(i < 2)
        return $i;
    return f($i-1) + f($i-2);
}

그것은 Fibonacci 방정식의 직접적인 표현입니다.

다른 함수는 생성 된 결과의 캐시를 생성하고 사용합니다. 예를 들어 FIB (4)를 평가하기 때문에 중요한 최적화입니다. 예를 들어, 그렇지 않으면 FIB (2)를 3 ~ 4 배, FIB (1)를 상당히 더 평가합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top