Loops 如何将简单循环转换为使用递归?
所以我有这个代码:Loops 如何将简单循环转换为使用递归?,loops,recursion,pascal,Loops,Recursion,Pascal,所以我有这个代码: WRITELN( “input which member of series”) READ(n) p ← 2 prev1 ← 1 prev2 ← 1 WHILE p IS LESS THAN n DO BEGIN term ← prev1 + prev2 prev2 ← prev1 prev1 ← term p ← p + 1 END WRITELN (“term =”, term) 有人能帮我重写代码,使其递归工作(在PHP或Pascal中) 编辑
WRITELN( “input which member of series”)
READ(n)
p ← 2
prev1 ← 1
prev2 ← 1
WHILE p IS LESS THAN n DO
BEGIN
term ← prev1 + prev2
prev2 ← prev1
prev1 ← term
p ← p + 1
END
WRITELN (“term =”, term)
有人能帮我重写代码,使其递归工作(在PHP或Pascal中)
编辑
N=4
我在用帕斯卡。问题是,非递归代码返回3,而递归代码返回2
这是我的递归代码:
program Fibfun;
VAR
n,prev1,prev2,term : Integer;
FUNCTION sw(p:integer):integer;Begin
if p < n then
Begin
term:= prev1 + prev2;
prev2:=prev1;
prev1:=term;
End
else
Begin
p:= 1 + sw(p);
End;
sw:=term;
End;
Begin
prev1:=1;
prev2:=1;
term:=1;
writeln('Input number: ');
readln(n);
writeln('term ', sw(2));
readln;
End.
programmfibfun;
变量
n、 prev1,prev2,项:整数;
函数sw(p:整数):整数;开始
如果p
程序测试;
变量
结果:longint;
num,i,error:integer;
strnum:字符串;
函数fib(n:整数):longint;
开始
如果你应该阅读什么是递归来完全理解它。。。应该阅读什么是递归才能完全理解它。。。应该阅读什么是递归才能完全理解它。。。对我把我的递归代码,但这不是wordkingOk,我得到的答案是递增部分,它必须在if条件的函数sw(p:integer):integer中;如果pprogram test;
var
result : longint;
num,i, error: integer;
strnum: string;
function fib(n : integer) : longint;
begin
if n <= 2 then fib := 1
else fib := fib(n-2) + fib(n-1);
end;
begin
if ParamCount = 0 then
begin
writeln('Enter integer:');
readln(strnum);
val(strnum,num,error);
end else
begin
val (ParamStr(1), num, error);
end;
for i := 1 to num do
begin
result:= fib(i);
writeln(i, ' : ', result);
end;
end.