pascal - 递归方法有问题吗?
问题描述
如果有负元素,我正在尝试验证数组 [1..199] 的所有元素。此代码不验证数组的第一个元素。我有义务通过递归方法来做到这一点。
我试图做一个单独的条件,但这没有奏效。我先用 for 做,然后改成递归方法。
Var a:array[1..100] of integer;n:integer;
Function E(n:integer):boolean;
Begin
if n=0 then E:=False
else if a[n]<0 then E:=True
else E:=E(n-1);
End;
Begin
readln(n);
for i:=1 to n do
readln(a[i]);
writeln('Are there negative numbers in array? ',E(n));
readln();
End;
如果有任何负面元素,我希望输出为真,如果没有,我希望输出为假。
解决方案
我不是Pascal
专家,但我认为您正在寻找这样的东西:
program Hello;
var
arrayWithNegatives : array[1..10] of integer = (-1,20,30,40,50,60,71,80,90,91);
arrayWithPositives : array[1..10] of integer = (0,20,30,40,50,60,71,80,90,91);
emptyArray : array of integer;
Function HasNegativeNumbers(a: array of integer; n:integer):boolean;
Begin
if n < 0 then HasNegativeNumbers := False
else if a[n] < 0 then HasNegativeNumbers := True
else HasNegativeNumbers := HasNegativeNumbers(a, n - 1);
End;
begin
writeln (HasNegativeNumbers(arrayWithNegatives, length(arrayWithNegatives) - 1));
writeln (HasNegativeNumbers(arrayWithPositives, length(arrayWithPositives) - 1));
writeln (HasNegativeNumbers(emptyArray, length(emptyArray) - 1))
end.
推荐阅读
- c# - SendGrid:电子邮件活动 API JSON 响应的反序列化未填充对象
- c# - .NET / C# - 获取下一个半周结束日期
- excel - Excel函数还是工具?查找加起来为指定总和的所有对
- c# - Unity:如何避免将游戏对象拖入公共脚本变量?
- android - TomtomMap.getUserLocation() 总是返回 null?
- django - 允许用户使用 Django Stripe (dj-stripe) 仅使用非付费帐户创建一定数量的对象
- python - 文字不会闪入屏幕
- angular - Angular:在 agGrid 中的动态列上设置默认排序的最佳方法
- html - responsive image with background + padding
- scala - Limit amount of elements a stream is processing at one time