递归方法有问题吗?
Is there a problem with the recursive method?
我正在尝试验证数组[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;
如果有任何负元素,我希望输出为 true,如果没有,我希望输出为 false。
我不是 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.
我正在尝试验证数组[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;
如果有任何负元素,我希望输出为 true,如果没有,我希望输出为 false。
我不是 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.