Persistent bugger: https://www.codewars.com/kata/55bf01e5a717a0d57e0000ec
📊 Compare perfs of different versions.
Persistent bugger: https://www.codewars.com/kata/55bf01e5a717a0d57e0000ec
📊 Compare perfs of different versions.
function persistence(num) { | |
// | |
// Brouillon | |
// --- | |
// ex avec 99 | |
// 9 9 -> 9*9 -> splitter le num en une liste de digits | |
// | |
// Pseudo-code: | |
// --- | |
// declarer un compteur | |
// tant que le prod >= 10 | |
// splitter les digits | |
// faire le produit des digits | |
// compteur++ | |
// | |
// retourner le compteur | |
// | |
let i = 0; | |
let prod = num; // 99 | |
while (prod >= 10) { | |
// splitter les digits (en un tableau de chiffres) | |
const digits = (""+prod).split('').map(el => Number(el)) // [9, 9] | |
// en faire le produit | |
prod = digits.reduce((acc, el) => acc * el) // 81 | |
i++ // 1 | |
} | |
return i | |
} |
// recursive version | |
function persistence(num, a=0) { | |
if (num >= 10) { | |
const digits = (""+num).split('').map(el => +el); | |
const prod = digits.reduce((acc, el) => acc*el); | |
return persistence(prod, a+1) | |
} else { | |
return a; | |
} | |
} |