帮忙简化一个递归
#include<stdio.h>
float A(float n);
float b;
int main()
{
int n;
float sum,a,b,i;
scanf("%d",&n);
sum=a=b=0.0;
for(i=1.0;i<=n;i++)
{
a=A(i+2);
b=A(i+1);
sum=sum+a/b;
}
printf("%.3f\n",sum);
return 0;
}
float A(float n)
{
if(n==1.0||n==2.0)
return 1.0;
else
{
n=A(n-1)+A(n-2);
return n;
}
}
题目是要求:有一个分数数列:2/1,3/2,5/3,8/5,13/8,21/13,……求出这个数列前n项之和
请帮忙简化一下,缩短程序运行时间(仍是用递归)
float A(float n);
float b;
int main()
{
int n;
float sum,a,b,i;
scanf("%d",&n);
sum=a=b=0.0;
for(i=1.0;i<=n;i++)
{
a=A(i+2);
b=A(i+1);
sum=sum+a/b;
}
printf("%.3f\n",sum);
return 0;
}
float A(float n)
{
if(n==1.0||n==2.0)
return 1.0;
else
{
n=A(n-1)+A(n-2);
return n;
}
}
题目是要求:有一个分数数列:2/1,3/2,5/3,8/5,13/8,21/13,……求出这个数列前n项之和
请帮忙简化一下,缩短程序运行时间(仍是用递归)
...全文
相关推荐
TreeViewWalker-简化递归
一个实用程序类,它使创建在TreeView控件上运行的递归方法更容易
一个简单的递归调用的实例
一个简单的递归调用方法,实现目录树的调用,.NET项目
一个例题,递归示例,非常形像的示例
一个例题,递归示例,非常形像的示例,对于不是很清楚的,可以学习学习
Java递归算法
递归算法是一种直接或者间接调用自身函数或者方法的算法。Java递归算法是基于Java语言实现的递归算法。 递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。 递归算法解决问题的特点: 1)递归是方法里调用自身。 2)在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。 3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。 4)在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归
递归算法总结
本人对递归算法的总结,当然这些只是本人的观点,你觉得好就吸取,不好可以给我建议


