【求】递归代码 散分

AnshuWang 2011-03-04 12:04:12
如题 大家贴下代码吧
...全文
203 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
so many in internet
yjjlyyj151 2011-03-05
  • 打赏
  • 举报
回复
+1[Quote=引用 25 楼 a294608748 的回复:]

引用 15 楼 kingwolfofsky 的回复:
从前有座山,山上有个庙,庙里有一个老和尚和一个小和尚,有一天,老和尚对小和尚说,
从前有座山,山上有个庵,庙里有一个老尼姑和一个小尼姑,有一天,老尼姑对小尼姑说,

从前有座山,山上有个庙,庙里有一个老和尚和一个小和尚,有一天,老和尚对小和尚说,
从前有座山,山上有个庵,庙里有一个老尼姑和一个小尼姑,有一天,老尼姑对小尼姑说,

……
[/Quote]
剑指苍穹 2011-03-05
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 kingwolfofsky 的回复:]
从前有座山,山上有个庙,庙里有一个老和尚和一个小和尚,有一天,老和尚对小和尚说,
从前有座山,山上有个庵,庙里有一个老尼姑和一个小尼姑,有一天,老尼姑对小尼姑说,

从前有座山,山上有个庙,庙里有一个老和尚和一个小和尚,有一天,老和尚对小和尚说,
从前有座山,山上有个庵,庙里有一个老尼姑和一个小尼姑,有一天,老尼姑对小尼姑说,

从前有座山,山上有个庙,庙里有一个老和尚和一个小和尚,有……
[/Quote]
从前有座山,山上有个庙,庙里有一个老和尚和一个小和尚,有一天,老和尚对小和尚说,
从前有座山,山上有个庵,庙里有一个老尼姑和一个小尼姑,有一天,老尼姑对小尼姑说,

从前有座山,山上有个庙,庙里有一个老和尚和一个小和尚,有一天,老和尚对老尼姑说,
从前有座山,山上有个庵,庙里有一个老尼姑和一个小尼姑,有一天,小尼姑对小和尚说,

从前有座山,山上有个庙,庙里有一个老和尚和一个老尼姑,有一天,老和尚对小尼姑说,
从前有座山,山上有个庙,庙里有一个小和尚和一个小尼姑,有一天,老尼姑对小和尚说,

.......
wangw89 2011-03-05
  • 打赏
  • 举报
回复
什么样的递归呢?
doc110 2011-03-05
  • 打赏
  • 举报
回复
这个随便找本书都有。
jinzhou520 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hqin6 的回复:]

C/C++ code
int fun(int i)
{
if (i == 0) return 0;
return f(--i);
}
[/Quote]
简单明了. 不知道递归在实际中用得多不多. 我怎么感觉都用不到呢.
太乙 2011-03-04
  • 打赏
  • 举报
回复
int fun(int i)
{
if (i == 0) return 0;
return f(--i);
}
delphiwcdj 2011-03-04
  • 打赏
  • 举报
回复
递归(recursion)是指把一个大的问题转化为同样形式但小一些的问题加以解决的方法。C语言允许一个函数调用它本身,这就是递归调用。即在调用一个函数的过程中又直接或间接地调用函数本身。不加控制的递归都是无终止的自身调用,程序中是绝对不应该出现这种情况的。为了防止无休止的递归,程序中应控制递归的次数,在某条件成立时进行递归,条件不成立不进行递归调用。并且在递归的调用过程中,不断改变递归的条件,以使递归条件不再成立。
同一问题可能既可以用递归算法解决,也可以用非递归算法解决,递归往往算法设计简单,出奇制胜,而普通算法(通常用循环解决)往往设计稍复杂。但执行效率递归算法逊于循环算法。递归反复调用自己,需要占用较多内存和计算机时间。但有一些问题只有用递归方法才能解决,如著名的汉诺塔问题。
递归程序设计的关键就是考虑问题的两种情况,一种是普遍情况即函数值等于把问题递推一步后的本函数的调用,一种是极端或端点情况,此时函数值有确定的一个值而无须再调用本函数。递归的过程就是从普遍情况逐步过渡到端点情况的过程。
例子:
5个坐在一起论年龄,问第五个人多少岁?他说比第四个人大两岁。问第四个人多少岁,他说比第三个人大两岁。问第三个人多少岁,他说比第二个人大两岁。问第二个人多少岁,他说比第一个人大两岁。问第一个人多少岁,他说10岁。请问第五个人几岁?

int age(int n)
{ int x;
if(n>1) x=age(n-1)+2;
else if(n==1) x=10;
return x;
}
void main( )
{ printf("%d",age(5));}
delphiwcdj 2011-03-04
  • 打赏
  • 举报
回复
求阶层

#include<iostream>
using namespace std;

int factorial(int n);
void main(void)
{
printf("%d",factorial(4));

}

int factorial(int n)
{
if(n==1||n==0)
return 1;
else
return n*factorial(n-1);
}
恨天低 2011-03-04
  • 打赏
  • 举报
回复

int fibo(int n)
{
if(n==0) return 0;
if(n==1) return 1;
return fibo(n-1)+fibo(n-2);
}
w0911h 2011-03-04
  • 打赏
  • 举报
回复
全排列

void paiLie(char a[], int start, int end)
{
int i = 0;
if(start<end-1)
{
char t;
for(i=start; i<end; i++)
{
t = a[start];
a[start] = a[i];
a[i] = t;

paiLie(a, start+1, end);

t = a[start];
a[start] = a[i];
a[i] = t;
}
}
else
{
printf("%s\n", a);
}
}

int main()
{
char b[] = "ABCD";
paiLie(b, 0, 4);
}


delphiwcdj 2011-03-04
  • 打赏
  • 举报
回复
Fibonacci求和

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int fun(int n)
{
int pos=0;
( n==0 || n==1 ) ? (pos=1) : (pos=(fun(n-1)+fun(n-2)));
return pos;
}

int main()
{
int res=0,count=0;
do
{
res+=fun(count++);
if (count==8)
{
break;
}

} while (1);
cout<<"sum: "<<res<<endl;// 54

return 0;
}

wyfwx 2011-03-04
  • 打赏
  • 举报
回复
在数据结构里拿
AnshuWang 2011-03-04
  • 打赏
  • 举报
回复
好像都是阶乘 !!
xunfeng_2008 2011-03-04
  • 打赏
  • 举报
回复
int fun(int i)
{
if (i == 0) return 0;
return f(--i);
}
一曲肝肠断 2011-03-04
  • 打赏
  • 举报
回复
求余数

int mod(int inum1, int inum2)
{
if(inum1 - inum2 <= 0) return (inum1 - inum2 ? inum1 : inum1 - inum2 );
else return mod(inum1 - inum2, inum2);
}
yiyefangzhou24 2011-03-04
  • 打赏
  • 举报
回复
#include <stdio.h>  


int add(int n){
if(n==0)return 0;
return (add(n-1)+n);
}

void main()
{
printf( "%d ",add(100));
}

论坛里多的是
JJF 2011-03-04
  • 打赏
  • 举报
回复
求n的阶乘

int count(int n)
{
if(n==0)
return 1;
if(n==1)
return 1;
else
return n*count(n-1);
}
gladstonejay 2011-03-04
  • 打赏
  • 举报
回复
其实你肯定会

递归唯一要注意的俩问题

1 溢出

2 停止条件
加载更多回复(6)

69,337

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧