所以我有一个返回对象的方法,该对象返回referrals of a individual
function getReferredUsers(userId) {
const usersMap = {
a : ['b', 'c'],
b: ['d', 'e'],
d: ['f', 'g']
};
return usersMap[userId] || [];
}
因此,在示例a directly referred b and c
中。 b directly referred d and e
等等。
因此d and e
成为indirect referrals
的{{1}}。 a
对于f,g
是间接的,而对于a
是d is also an indirect
的。
直接获得3分,间接获得2分。
我们需要计算a
的总分。
我尝试过
a
但是它不起作用。
我在做什么错了?
更新
var _opSum = 0;
function getTotalReferralBonus(userId, bonus) {
if(bonus === 0)
return 0;
let directUsers = getReferredUsers(userId);
if(directUsers.length > 0) {
for(let user of directUsers) {
_opSum = getTotalReferralBonus(user, bonus -1) + bonus;
}
}else {
_opSum += getTotalReferralBonus(userId, bonus -1);
}
return _opSum;
}
将获得的总积分为a
= 3 + 3 (for b,c) + 2 + 2 (for d,e through b) + 1 + 1 (for f,g through d through b)
答案 0 :(得分:2)
您需要一个局部变量_opSum
,并且需要从嵌套的Id
中获得所有奖励。
function getReferredUsers(userId) {
const usersMap = {
a: ['b', 'c'],
b: ['d', 'e'],
d: ['f', 'g']
};
return usersMap[userId] || [];
}
function getTotalReferralBonus(userId, bonus) {
var _opSum = 0; // local variable
if (bonus === 0) return 0;
let directUsers = getReferredUsers(userId);
if (directUsers.length > 0) {
for (let user of directUsers) {
_opSum += getTotalReferralBonus(user, bonus - 1) + bonus; // add all instead of assignment
}
} else {
_opSum += getTotalReferralBonus(userId, bonus - 1);
}
return _opSum;
}
console.log(getTotalReferralBonus('a', 3));