귀속과 심도 있는 복사의 총체적 운용

2301 단어

귀속


역귀의 사상은 한 함수가 이 일을 할 수 있다고 믿고 이 함수를 이용하여 이전의 값을 미루어 이 일을 완성하는 것이다

n계층을 이용하다


계층의 공식 n!123……(n-1)*n;n=0시: 0!=1
  • 우리는 fn(n)이 n을 구할 수 있는 계층이라고 믿어야 한다
  • 그리고 공식에서 n의 계층이 (n-1)과 같은 계층 곱하기 n
  • 함수를 이용하여 f(n-1)
  • 얻기
            function strata(n){
                if(n==1||n==0){
                    return 1;
                }
                else{
                    return strata(n-1)*n;
                }
            }
    
    

    계단을 돌아가는 방법을 이용하다


    제목이 만약 n개의 계단이 있다면, 너는 매번 한 마디 혹은 두 마디씩 걷는데, 몇 가지 방법이 있느냐
  • fn(n)n급 계단까지 걷는 방법
  • n 이전의 최근 걸음걸이가 생각난다
  • 마지막으로 한 마디를 걸으면 (n-1)마디가 되면 f(n-1)종의 걷기
  • 가 있다
  • 만약에 마지막에 2절을 가면 (n-2) 이전에 f(n-2) 중주법
  • 이 있다.
  • 그래서 n에 도착했을 때 모두 f(n-1)+f(n-2)
  •         function go(n){
                if(n==1||n==2){
                    return 1
                }
                else{
                    return go(n-1)+go(n-2);
                }
            }
    

    기본 깊이 복사 방법


    심층 복사가 왜 필요한지 이해해야 한다
  • 기본 유형 및 참조 유형
  • 값을 부여할 때 인용 형식은 주소만 부여한 것이고 기본 형식은 값을 부여한 것이다
  • 전체 복제본으로 새 객체의 값이 변경되어 원래 객체에 영향을 주지 않음
  • 매개 변수 하나만 전달

            function deepCopy(obj){
                var newobj = {};
                if(typeof obj === 'object'&& obj instanceof Array){
                    var newobj=[];
                }
                for(var key in obj){
                    if(typeof obj[key] === 'object'){
                        newobj[key]=deepCopy(obj[key])
                    }
                    else{
                    newobj[key]=obj[key];
                }
                }
                return newobj;
            }
    

    새로운 상대, 오랜 상대.

            function deepCopy2(oldobj,newobj){
                var newobj = newobj || {};
                for(var i in oldobj){
                    if (typeof oldobj[i]==='object') {
                        if(oldobj[i].constructor==='Array'){
                            newobj[i]=[];
                        }
                        else{
                            newobj[i]={};
                        }
                        deepCopy2(oldobj[i],newobj[i]);
                    }
                    else{
                        newobj[i]=oldobj[i];
                    }
                }
                return newobj;
            }
    

    좋은 웹페이지 즐겨찾기