wolfram-mathematica - 如何在 Mathematica 中正确实现递归函数?
问题描述
我正在编写一个代码,它根据上一步的值评估步骤 n 的函数。我正在尝试通过递归来解决它。这是一些代码
Clear["Global`*"];
ResourcesToPower[x_] := Log[1.1, x/10 + 1]/Log[1.1, 2]*10;
ProvincePower = ConstantArray[50, 10];
ProvinceResources[p_] := ProvincePower[[p]]*10;
PlayerResources[0] = 50;
PlayerResources[n_] :=
PlayerResources[n] =
PlayerResources[n - 1] + ProvinceResources[PlayerProvince[n - 1]];
PlayerPower[n_] := ResourcesToPower[PlayerResources[n]];
PlayerProvince[0] = 1;
PlayerProvince[n_] :=
PlayerProvince[n] =
If[ResourcesToPower[PlayerResources[n - 1] ] >=
ProvincePower[PlayerProvince[n - 1] ],
PlayerProvince[n - 1] + 1, PlayerProvince[n - 1]];
p = PlayerProvince[3]
我收到错误:
"表达式 If[25.8496>={50,50,50,50,50,50,50,50,50,50}[1],PlayerProvince[1-1]+1, PlayerProvince[1-1]] 不能用作零件规格"
出于某种原因,Mathematica 不会将表达式扩展为数字。我究竟做错了什么?
解决方案
在上面最后一行代码中的第三行更改
ProvincePower[PlayerProvince[n - 1]]
至
ProvincePower[[PlayerProvince[n - 1]]]
因为ProvincePower
是数组而不是函数,您需要[[value]]
从数组或列表中提取元素。
推荐阅读
- azureml - AzureML LocalServices 无法连接到注册表
- c# - 如何使用 Azure AD B2C 禁用重置密码时的电子邮件验证?
- apache - .htaccess - 忽略路径的某些部分而不重定向
- pandas - 使用熊猫计算比率
- matlab - 使用颜色条通过给定值将颜色附加到条形图 MATLAB
- javascript - 为什么 Chrome 告诉我 localhost 拒绝连接?
- docker - 无法在 minikube 中部署 helm chart
- python - Pynput 检测点击功能,即使它没有被点击也能检测到它
- github-actions - Github Action Run - 安全导入显示“传递给函数的一个或多个参数无效”错误
- python - Pandas - 出现字符串时拆分数据并创建列