在Matlab中通过递归查找数字中某个数字的出现次数

  • 本文关键字:数字 递归 查找 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

您还必须更新else分支中的计数counts变量,以避免未初始化的变量使用。

看看如何使用调试器手册。只需点击函数内的行号,即可运行代码。使用F10和F11键逐行评估代码。这有助于您了解程序的作用。

相关内容

  • 没有找到相关文章

最新更新