Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 如何将简单循环转换为使用递归?_Loops_Recursion_Pascal - Fatal编程技术网

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.