직사각형의 정사각형 둘레

다음 이미지에서(스크린샷이 더 명확하지 않은 경우 확대해야 함) 문제 설명과 예상되는 입력 및 출력을 볼 수 있습니다.



입력은 정수이며 다음 이미지에 표시된 것과 같은 방식으로 배치된 n + 1 정사각형이 있을 때 직사각형의 모든 정사각형 둘레의 합을 계산해야 합니다.



위의 이미지에는 매우 독특한 방식으로 장착된 6개의 사각형이 있습니다. 사각형의 변은 언뜻 보기에는 무작위로 보이지만 실제로는 대부분의 멍청한 코더도 알고 있는 피보나치 수열입니다.

가장 안쪽 원의 변은 1이고 진행하는 사각형의 변은 1, 2, 3, 5, 8입니다.

1, 1, 2, 3, 5, 8



모르는 경우 피보나치 수열이 무엇인지 - 피보나치 수열은 각 숫자가 이전 두 수의 합인 수열입니다. - Wikipedia

접근하다:
  • 'n'이 입력인 'n+1' 피보나치 수의 합을 생성하는 함수를 만듭니다
  • .
  • 4를 곱하여 결과 합계의 둘레를 계산합니다
  • .

    연산:
  • 다음 함수는 'n+1' 피보나치 수의 합을 계산합니다.

  • function fib(num) {
      let a=1;
      let b=1;
      let s=0;
      if(num===0) 
        return 1;
      while(num>1) {
        let c=a+b;
        s+=c;
        a=b;
        b=c;
        num-=1;
      }
      return s+2;
    } 
    


    이 함수는 숫자 'num'을 입력으로 사용합니다.
  • 'fib()' 함수의 처음 두 줄은 처음 두 피보나치 수를 초기화하고 할당합니다.

  • let a=1;
    let b=1;
    


  • 3행에서는 'num+1' 피보나치 수의 합을 저장하는 's' 변수를 언급합니다.let s=0;
  • 4-5행: 입력이 0인 경우 입력 '0'에 대해 1을 반환하고 num+1 숫자는 1이 됩니다.

  • if(num===0) 
        return 1;
    


  • 6-12행: 이 블록은 필요한 피보나치 수를 추가할 때까지 실행되는 'while()' 루프를 언급합니다. 이는 루프가 num-2번 실행될 때 피보나치 수열 - 2가 됩니다. 혼란스럽습니까? 나는 멍청한 코딩 기술을 가지고 있습니다 :)

  • while(num>1) {
        let c=a+b;
        s+=c;
        a=b;
        b=c;
        num-=1;
      }
    


    루프는 1-2행에서 언급된 피보나치 수열의 처음 두 숫자를 이미 초기화하고 선언했기 때문에 num-2번 실행됩니다.
  • 피보나치 시퀀스의 처음 두 숫자를 무시하고 'while' 루프에서 나머지 피보나치 숫자의 합만 계산했기 때문에 'fib()' 함수의 마지막 줄에서 s+2를 반환합니다.return s+2;
  • 이제 마지막으로 콘솔/프롬프트 화면의 출력으로 'fib()' 함수의 출력에 4를 곱하여 'n+1' 제곱의 합의 둘레를 출력합니다.console.log( 4*fib(n));

  • 이 문제는 피보나치 수 생성 개념과 약간의 기본 수학(예: 정사각형의 둘레 공식)을 사용합니다.

    좋은 웹페이지 즐겨찾기