matlab - 简单的递归函数不能很好地工作
问题描述
这只是一个简单的递归函数测试。
它应该在 n = 3 处停止,但不是。
你能告诉我我的代码哪里出错了吗?
谢谢!
>> recursiveFunction(0)
101
1
g
102
1
g
103
1
2
3
2
g
103
1
2
3
3
g
103
1
2
3
2
g
102
1
g
103
1
2
3
2
g
103
1
2
3
3
g
103
1
2
3
3
g
102
1
g
103
1
2
3
2
g
103
1
2
3
3
g
103
1
2
3
function recursiveFunction(callHierarchie)
callHierarchie = callHierarchie + 1;
disp(callHierarchie + 100);
for n = 1:3
disp(n);
if callHierarchie <= 2
disp('g');
recursiveFunction(callHierarchie);
end
end
end
解决方案
问题在于您如何生成输出以及如何解释输出。这是一个生成相同输出的 Python 等效函数:
def recursiveFunction1(callHierarchie):
callHierarchie = callHierarchie + 1
print("{:>6}".format(callHierarchie + 100))
for n in range(1, 4):
print("{:>6}".format(n))
if callHierarchie <= 2:
print('g')
recursiveFunction(callHierarchie)
recursiveFunction(0)
人们可以验证它产生相同的输出。让我们根据递归级别修改代码以缩进:
def recursiveFunction(callHierarchie):
callHierarchie = callHierarchie + 1
print(" " * callHierarchie, "{:>6}".format(callHierarchie + 100))
for n in range(1, 4):
print(" " * callHierarchie, "{:>6}".format(n))
if callHierarchie <= 2:
print(" " * callHierarchie, 'g')
recursiveFunction(callHierarchie)
现在输出显示略有不同:
% python3 test.py
101
1
g
102
1
g
103
1
2
3
2
g
103
1
2
3
3
g
103
1
2
3
2
g
102
1
g
103
1
2
3
2
g
103
1
2
3
3
g
103
1
2
3
3
g
102
1
g
103
1
2
3
2
g
103
1
2
3
3
g
103
1
2
3
%
您可以看到它n
确实停在 3 处,但是您看到的额外数字n
处于不同的递归级别!
推荐阅读
- javascript - 与 Internet Explorer 11 中 Google Chrome 的“添加源地图...”的功能等效
- linux - 有谁知道如何使用 CURL “伪造”下载?
- html - 如何在 CSS 中为标题创建响应式底部边框?
- sql-server - SQL Server 2005 从表 1 和表 2 中选择数据,但如果表 2 列 1 值为空 从表 3 中选择数据
- asp.net-core - Web App 的 Azure ADB2C 应用注册是否需要 App Key?
- java - 无法构造org.codehaus.jackson.map.type.SimpleType的实例,问题:抽象类型只能被实例化
- azure - Microsoft graph 获取通话数据不起作用
- javascript - 在角度应用程序中以树结构显示数据
- excel - 循环浏览工作表以查看工作表名称是否已被占用 - 循环中的 Len/Left 函数
- android - 如何将不同 api id 的数据显示到不同的回收视图项?