문제 설명

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 n을 입력받아 n이 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요

이런 문제가 있는데 대부분 for 문 쓰거나

function Harshad(n){ return !(n % (n + "").split("").reduce((a, b) => +b + +a )); }



이런식으로 했더라고요,, 근데

function solution(x,i=0,sum=0) { return String(x).length==i?x%sum==0:solution(x,i+1,sum + String(x)[i]*1); }

이런식으로 처리한 사람도 있던데,  아직 코딩배운지 얼마 안 되어서.. 이게 무슨 원리로 작동하는지도 잘 모르겠어요 ㅠ 


  다른 문제도 다른분이 이런식으로 한게 있던데 댓글에 재귀함수? 라는 말이 있던것 같더라고요

  이런식으로 하면 효율이 더 좋은가요?