Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 Ulam 번호 시퀀스를 만드는 방법은 무엇입니까?

<시간/>

수학자 Ulam은 다음과 같이 양의 정수 n(n>0)에서 일련의 숫자를 생성할 것을 제안했습니다. -

n이 1이면 중지합니다. n이 짝수이면 다음 수는 n/2입니다. n이 홀수이면 다음 수는 3 * n + 1입니다. 1에 도달할 때까지 프로세스를 계속합니다. 

다음은 처음 몇 개의 정수에 대한 몇 가지 예입니다. -

<예비>2->13->10->5->16->8->4->2->14->2->16->3->10->5->16->8->4->2->17->22->11->34->17->52->26->13->40->20->10->5->16->8->4 ->2->1

숫자를 받아서 그 숫자로 시작하는 Ulam 시퀀스를 반환하는 JavaScript 함수를 작성해야 합니다.

예시

이에 대한 코드는 -

 const num =7; const generateUlam =num => { const res =[num]; if(num &&num ===Math.abs(num) &&isFinite(num)){ while (num !==1) { if(num % 2){ num =3 * num + 1 }else{ num /=2; }; res.push(숫자); }; }else{ false를 반환합니다. }; 반환 res;};console.log(generateUlam(num));console.log(generateUlam(3));

출력

콘솔의 출력은 -

[ 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1][ 3, 10, 5, 16, 8, 4 , 2, 1]