/**
* 计算N年后农场羊的数量。
*
* 农场初始有两只羊,每年羊的数量翻倍,但每年年底会卖掉一只羊。
*
* @param {number} n 年数。
* @returns {number} n年后羊的数量。
* @throws {Error} 如果n不是非负整数。
*/
function calculateSheep(n) {
if (!Number.isInteger(n) || n < 0) {
throw new Error("年份必须是非负整数。");
}
let sheepCount = 2;
for (let i = 1; i <= n; i++) {
sheepCount *= 2;
sheepCount -= 1;
}
return sheepCount;
}
// 测试用例
console.log(calculateSheep(0)); // 输出 2
console.log(calculateSheep(1)); // 输出 3
console.log(calculateSheep(2)); // 输出 5
console.log(calculateSheep(3)); // 输出 9
console.log(calculateSheep(4)); // 输出 17
console.log(calculateSheep(5)); // 输出 33
// 错误处理示例
try {
console.log(calculateSheep(-1));
} catch (error) {
console.error(error.message); // 输出 "年份必须是非负整数。"
}
try {
console.log(calculateSheep(1.5));
} catch (error) {
console.error(error.message); // 输出 "年份必须是非负整数。"
}
这个函数calculateSheep(n)
接受年份 n
作为输入,并返回 n
年后农场里羊的数量。它首先检查 n
是否为非负整数。如果不是,则抛出一个错误。然后,它初始化羊的数量为 2。接下来,它循环 n
次,每次将羊的数量翻倍,然后减 1(因为年底卖掉一只羊)。最后,它返回最终的羊的数量。
代码中包含了几个测试用例,以演示函数的用法和输出。还包括了错误处理示例,以演示如何处理无效输入。
这个解答使用了JavaScript,因为问题中提到了前端开发。这个函数可以很容易地集成到任何前端项目中。
标签:非负,N年,农场,number,几只羊,见下文,数量 From: https://www.cnblogs.com/ai888/p/18601487