递归算法流程图如何画请以菲波那切数列递归算法为例

递归算法流程图如何画请以菲波那切数列递归算法为例,第1张

递归(recursion):程序调用自身的编程技巧。

递归满足2个条件:

1)有反复执行的过程(调用自身)

2)有跳出反复执行过程的条件(递归出口)

递归例子:

(1)阶乘

n! = n * (n-1) * (n-2) * ...* 1(n>0)

//阶乘

int recursive(int i)

{

int sum = 0

if (0 == i)

return (1)

else

sum = i * recursive(i-1)

return sum

}

(2)河内塔问题

//河内塔

void hanoi(int n,int p1,int p2,int p3)

{

if(1==n)

cout<<"盘子从"<<p1<<"移到"<<p3<<endl

else

{

hanoi(n-1,p1,p3,p2)

cout<<"盘子从"<<p1<<"移到"<<激早p3<<endl

hanoi(n-1,p2,p1,p3)

}

}

(3)全排列

从n个不明手雀同元素中任取m(m≤n)个元素薯册,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。

如1,2,3三个元素的全排列为:

1,2,3

1,3,2

2,1,3

2,3,1

3,1,2

3,2,1

//全排列

inline void Swap(int &a,int &b)

{

int temp=a

a=b

b=temp

}

void Perm(int list[],int k,int m)

{

if (k == m-1)

{

for(int i=0i<mi++)

{

printf("%d",list[i])

}

printf("n")

}

else

{

for(int i=ki<mi++)

{

Swap(list[k],list[i])

Perm(list,k+1,m)

Swap(list[k],list[i])

}

}

}

递归算法,主要要知道递归出口在哪里,

当问题出现循环嵌套,感觉一直套不玩的那种题一般就用上递归算法了悄脊,

想阶乘不一定要用递归,用递归出口也更好找,出口股市变量减到1

首先输入启判渗一个数n,

定义一个存储结冲让果的s=1

判断数n是不是1,不是就进行循环运算,

S=n*(n-1)

N--


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

原文地址: http://outofmemory.cn/yw/12521086.html

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

发表评论

登录后才能评论

评论列表(0条)

保存