Skip to content

Instantly share code, notes, and snippets.

@abernier
Last active August 26, 2020 05:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save abernier/3852c326558525b3b1489f2be531f4b5 to your computer and use it in GitHub Desktop.
Save abernier/3852c326558525b3b1489f2be531f4b5 to your computer and use it in GitHub Desktop.
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;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment