matlab - 在Matlab中通过递归查找数字中数字的出现
问题描述
这个递归函数接受两个输入参数,第一个 (A) 是一个数字,第二个 (n) 是一个数字,检查 n 在 A 中的出现。(通过在每次递归中删除其最后一个数字来更新 A)。似乎递归是无限的,基本情况(A == 0)无效,但为什么。
function counts = countn(A,n)
if (A == 0)
counts= 0;
end
if (n == mod(A,10))
disp(A);
disp(floor(A/10));
disp(mod(A,10));
B = floor(A/10);
counts = countn(B,n) + 1;
else
B = floor(A/10);
countn(B,n);
end
end
解决方案
它不会停止,因为它首先评估第一个 if 语句if( A == 0)
,然后if (n == mod(A,10))
在 else 分支中跳转并再次递归调用该函数。因此,它不会if
像您预期的那样在第一个语句中停止。
像这样的东西应该工作:
function counts = countn(A,n)
if (A == 0)
counts = 0;
elseif (n == mod(A,10))
disp(A);
disp(floor(A/10));
disp(mod(A,10));
B = floor(A/10);
counts = countn(B,n) + 1;
else
B = floor(A/10);
counts = countn(B,n);
end
end
您还必须更新分支counts
中的计数变量else
以避免未初始化的变量使用。
看看如何使用调试器手册。只需单击函数内的行号并运行代码。使用 F10 和 F11 键逐行评估您的代码。这有助于您了解程序的功能。
推荐阅读
- python - 为什么通过 pip3 安装任何包时,会出现 configparser.InterpolationSyntaxError 错误?
- c# - 使用 ASP.NET MVC 属性路由验证和传递控制器级参数
- r - r 非 NA 列值之间的差异
- javascript - 使用 fetch 获取 API 响应负载
- r - 是否可以通过中介运行多组 SEM?
- mysql - 想要一个解决方案来使用单个查询分别查找上限和下限计数
- python - 尝试在 csv 文件中搜索项目
- python - MySQLdb - 没有游标的参数化查询?
- python - 如何在函数运行期间忽略所有用户输入?
- python - 在运行时动态设置 Python 解释器优化