求救:谁能把这个递归问题变成迭代的?

littlexidong 2004-06-30 01:27:15
计算二项式系数:
f(n,m)=f(n-1,m)+f(n-1,m-1);
f(n,0)=1;
f(n,n)=1;
怎么改成迭代啊?
...全文
151 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlexidong 2004-07-02
  • 打赏
  • 举报
回复
看来像这种复杂的递归好像没有解~~~
Wolf0403 2004-07-01
  • 打赏
  • 举报
回复
栈消解还是递归,不是迭代……
xjp6688 2004-07-01
  • 打赏
  • 举报
回复
关注
izdlywn 2004-07-01
  • 打赏
  • 举报
回复
#include <iostream>

int result[100][2]
int flag;
int sum;
void push ( int x, int y )
{
result[flag][0] = x;
result[flag][1] = y;
flag++;
}
void pop ( int & x, int & y )
{
flag--;
x = result[flag][0];
y = result[flag][1];
}
void fun ( int x, int y )
{
push ( x, y );

while ( flag != 0 )
{
pop ( x, y );
if( x == y )
sum++;
else if( y ==0 )
sum++;
else
{
push ( x - 1, y );
push ( x - 1, y - 1 );
}
}
}
void main ( )
{
flag = 0;
sum = 0;
fun ( 8, 8 );
cout << sum;
}
没有调试,不知道有没有语法错误。
我想你应该能看懂吧~~
呵呵~
izdlywn 2004-07-01
  • 打赏
  • 举报
回复
呵呵,我可以把它改成栈得形式。
不知道符合你得要求不?
littlexidong 2004-06-30
  • 打赏
  • 举报
回复
我晕
楼上的楼上是正宗的递归调用
这样栈不够用啊~~~
我想,那个兔子问题可以改成迭代,这个怎么不行了?
还不是一样的嘛,那个f(n)=f(n-1)+f(n-2)~~~
downcast()的用的是公式啊。。
downcast 2004-06-30
  • 打赏
  • 举报
回复
n * (n - 1) * ... * (n - m + 1) / n!
ljux 2004-06-30
  • 打赏
  • 举报
回复
写的简练,不知道考试的时候是不是按照这个格式就行了???
Dong 2004-06-30
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

int f(int a,int b)
{
if(a==b)
return 1;
else if(b==0)
return 1;
else
{
return (f(a - 1,b) + f(a - 1,b - 1));
}
}
int main()
{
cout<<f(4,3);
return 0;
}
littlexidong 2004-06-30
  • 打赏
  • 举报
回复
顶一下,是不是太简单了?

69,382

社区成员

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

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