--- id: 645ca62092c53f29f4ea9bf6 title: Step 62 challengeType: 0 dashedName: step-62 --- # --description-- To really see the call stack in action, you just need to modify the function slightly. First, rename the `countdown()` function to `countDownAndUp()`. Remember to update your function calls, too. # --hints-- You should not have a function named `countdown()` in your code. ```js assert.notMatch(code, /(var|let|const)\s+countdown\s*=\s*\(\s*\)\s*=>\s*\{[\s\S]+\}/); ``` You should have a function named `countDownAndUp()` in your code. ```js assert.isFunction(countDownAndUp); ``` Within the body of the `else` statement in your `countDownAndUp()` function, you should call `countDownAndUp()` with an argument of `number - 1`. ```js assert.match(code, /else\s*\{\s*countDownAndUp\(\s*number\s*-\s*1\s*\)/); ``` You should call `countDownAndUp()` with an argument of `3`. ```js assert.match(code, /countDownAndUp\(\s*3\s*\)/); ``` # --seed-- ## --seed-contents-- ```html Decimal to Binary Converter

Decimal to Binary Converter

``` ```css *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { --light-grey: #f5f6f7; --dark-blue: #1b1b32; --orange: #f1be32; } body { background-color: var(--dark-blue); font-family: "Times New Roman", Times, serif; font-size: 18px; color: var(--light-grey); padding: 0 15px; display: flex; flex-direction: column; align-items: center; } h1 { text-align: center; font-size: 2.3rem; margin: 20px 0; } .input-container { margin: 10px 0; display: flex; flex-direction: column; gap: 10px; justify-content: center; align-items: center; } .convert-btn { background-color: var(--orange); cursor: pointer; border: none; padding: 4px; } .number-input { height: 25px; } #result { margin: 10px 0; min-width: 200px; width: fit-content; min-height: 80px; word-break: break-word; padding: 15px; border: 5px solid var(--orange); font-size: 2rem; text-align: center; } #animation-container { margin: auto; max-width: 300px; } .animation-frame { margin: 250px auto 0; padding: 15px 10px; border: 5px solid var(--orange); font-size: 1.2rem; text-align: center; } @media screen and (min-width: 500px) { .input-container { flex-direction: row; } #result { max-width: 460px; } } ``` ```js const numberInput = document.getElementById("number-input"); const convertBtn = document.getElementById("convert-btn"); const result = document.getElementById("result"); --fcc-editable-region-- const countdown = (number) => { console.log(number); if (number === 0) { return; } else { countdown(number - 1); } }; countdown(3); --fcc-editable-region-- const decimalToBinary = (input) => { let binary = ""; if (input === 0) { binary = "0"; } while (input > 0) { binary = (input % 2) + binary; input = Math.floor(input / 2); } result.innerText = binary; }; const checkUserInput = () => { if ( !numberInput.value || isNaN(parseInt(numberInput.value)) || parseInt(numberInput.value) < 0 ) { alert("Please provide a decimal number greater than or equal to 0"); return; } decimalToBinary(parseInt(numberInput.value)); numberInput.value = ""; }; convertBtn.addEventListener("click", checkUserInput); numberInput.addEventListener("keydown", (e) => { if (e.key === "Enter") { checkUserInput(); } }); ```