递归算法的实现

递归算法的实现,第1张

如何设计递归算法

1.确定递归公式

2.确定边界(终了)条件

递归的一般模式

procedure aaa(k:integer)

begin

if k=1 then (边界条件及必要 *** 作)

else begin

aaa(k-1)

(重复的 *** 作)

end

end

C#:例子

例:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少。

public class MainClass{public static void Main(){Console.WriteLine(Foo(30))}public static int Foo(int i){if (i <= 0)return 0else if(i >0 &&i <= 2)return 1else return Foo(i -1) + Foo(i - 2)}}

又如:

procedure a

begin

.

.

.

a

.

.

.

end

这种方式是直接调用.

又如:

procedure c(形参)forward

procedure b

局部说明

begin

. .

c(实参)

. .

end

procedure c

局部说明;

begin

. .

b

. .

end

这种方式是间接调用.

例1计算n!可用递归公式如下:

fac:=n*fac(n-1) {当n>0时}

fac(n)={

fac:=1{ 当n=0时}

可编写程序如下:

program facn

var

n:integer

function fac(n:integer):real

begin

if n=0

then fac:=1

else fac:=n*fac(n-1)

end

begin

write('n=')readln(n)

writeln(n,'!=',fac(n):0:0)

end. JavaScript:例子//递归算法//递归算法function recursionAlgorithm(num){if(num <= 1)//判断如果num小于等于1的情况下,返回本身{   return 1 }else{  return num * arguments.callee(num - 1) //调用函数本身进行返回}}

1、首先本题的思路已经给出,要求用递归算法。

2、程序源代码如下:

#include<stdio.h>

int sum(int n)

int main()

{

int i=100

printf("1~%d的和为:\n",i)

printf("%d\n",sum(100))

return 0

}

//下面是一个递归求和函数

int sum(int n)

{

if (n==1)

return 1

else

return n+sum(n-1)

}

3、程序的输出结果如下:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/8095533.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存