C语言编程:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
public class 第二十题求数列之和 {
public static void main(String[] args) {
System.out.println("数列的和为:" + getValue(20));
}
//获取第i项的值 2/1,3/2,5/3,8/5,13/8
public static double getValue(int n) {
double a=2; //分子
double b = 1;//分母
double sum = 0; //值
double temp = 0;//临时变量
for(int i = 0; i < n; i++) {
sum += a/b;
temp = a;
a += b;
b = temp;
}
return sum;
}
}
扩展资料:
for循环度是编程语言中一种循环语句,而循环语句由循环体及循环的判定条件两部分组成,其表达式为问:for(单次表达式;条件表达式;末尾循环体){中间循环体;}
执行过程为:
求解表达式1;
求解表达式2。若其值为真,则执行 for 语句中指定的内嵌语句,然后执行第3步;若表达式2值为假,则结束循环,转到第答5步;
求解表达式3;
转回上面第2步继续执行;
循环结束,执行 for 语句下面的语句。
执行过程中,“表达式1”只执行一次,循环是在“表达式2”“表达式3”和“内嵌语句”之间进行的。
#include<stdio.h>
/*
函数名:Gcd
参数列表:长整型数M,N(M>N)
函数功能:用欧几里得算法求最大公约数
返回值:M与N的最大公约数
*/
longGcd(longM,longN)
{
longRem;
while(N>0)
{
Rem=M%N;
M=N;
N=Rem;
}
returnM;
}
/*
函数名:fun
参数列表:单项分子a,单项分母b,最终分子alast,最终分母blast,项数n
函数功能,分数求和
返回值:无
*/
int fun(int*a,int*b,long*alast,long*blast,intn)
{
if(n==0)ﻩﻩﻩﻩﻩ//结束递归条件
{
return-1;
}
int i;
ﻩ
*alast=(*alast)*(*b)+(*blast)*(*a);
*blast=(*blast)*(*b);//对最终值进行约分
longfactor=Gcd(*alast,*blast);//最大公约数
*alast=*alast/factor;
*blast=*blast/factor;
printf("+%d/%d",*a,*b);ﻩﻩﻩ系
*b=*a-*b;
n--;
fun(a,b,alast,blast,n);//递归
return0;
}
intmain()
{
int n;
int a=3,b=2;
longalast=2,blast=1;
printf("Inputn=");ﻩﻩﻩﻩ//输入需要求的项数
scanf("%d",&n);
printf("2/1");
fun(&a,&b,&alast,&blast,n-1);
printf("=%ld/%ld\n",alast,blast);
return0;
}
一、return在函数中的作用
我们如果将函数看做一个加工厂,参数就是我们向加工厂投入的原料,具体的函数功能实际上就是加工的过程,而return语句代表返回值,就是加工厂在实现加工之后给“投资人”的成品。
二、return语句的特点
1、在函数当中,遇到return语句之后就意味着函数运行的结束,在此之后的代码是不运行的。
2、它不支持任何运算也没有任何内建方法,和任何其他的数据类型比较是否相等时永远返回false,也可以将None赋值给任何变量。
3、执行到return语句时,会退出函数,return之后的语句不再执行。但将return语句放在try语句块中,是个例外。
三、return的默认值:return函数默认的返回值为undefined。
本回答被网友采纳谢谢啊, 不过你最后的那个cout<<sum<<endl;
我没学 暂时 ,, 可以告诉一下意思吗
cout<<sum<<endl;就相当于printf("%f",sum);
本回答被提问者采纳C语言编程:有一分数序列:2\/1,3\/2,5\/3,8\/5,13\/8,21\/13...求出这个...
1,2,3,5,8,13,21 ... 从第三项开始,F(n)=F(n-1)+F(n-2),符合斐波那契数列特征。本题的分数序列,以上述数列的第n项作为n项的分母,以n+1项作为n项的分子。不懂C语言。一般来说,分数计算的结果,应该以分数形式精确表达。写了一段fortran代码,计算这个数列前20项的和。sum =...
C语言编程:有一分数序列:2\/1,3\/2,5\/3,8\/5,13\/8,21\/13...求出这个...
public class Demo11 { public static void main(String[] args) { double sum=2\/1;double m=2;\/\/定义分子 double n=1;\/\/定义分母 for(int i=2;i<=20;i++){ m=m+n;n=m-n;sum+=(double) m\/n; \/\/将分子的类型强制转换成double,否则两个int相除,结果还是int会将小数点后都舍...
C语言编程:有一分数序列:2\/1,3\/2,5\/3,8\/5,13\/8,21\/13...求出这个...
public static void main(String[] args) { System.out.println("数列的和为:" + getValue(20));} \/\/获取第i项的值 2\/1,3\/2,5\/3,8\/5,13\/8 public static double getValue(int n) { double a=2; \/\/分子 double b = 1;\/\/分母 double sum = 0; \/\/值 double temp = 0...
C++编程,有一个分数序列 2\/1,3\/2,5\/3,8\/5,13\/8,21\/13,... 求这个分数...
i; cin>>n; double a=1,b=2; double result = 0.0; for(i=0;i<n;++i) { double tmp = b\/a; result +=tmp; b = a+b; a = b-a; } cout<<fixed<<setprecision(
用C语言编写程序:有一分数序列:2\/1,3\/2,5\/3,8\/5,13\/8,21\/13...求...
float i=1.0,j=2.0,sum=0.0,temp;int n;for(n=0;n<20;n++){ sum+=j\/i;temp=j; \/\/temp存储前一个分数的分子j j=i+j; \/\/j赋值为此次循环的分子与分母之和,它将作为下次的分子 i=temp; \/\/i赋值为此次循环的分子,它将作为下次的分母 } printf("The SUM is %f\\n",sum);...
c语言编程 有一分数系列 2\/1,3\/2,5\/3,8\/5,13\/8,21\/13,... 求出这个数...
你应该知道Fibonacci数列吧。就是第一个数和第二个数都是1,以后的数都是前面两个数的和,(1,1,2,3,5,8,13。。。)。加点分吧,我帮你做
...有一个分数序列:2\/1,3\/2,5\/3,8\/5,13\/8,21\/13...求出这个数列前20项...
首先弄清楚这组分数序列的规律:从第二个数开始分子=前一个数的分子+分母分母=前一个数的分子2.需求是前20项之和,因此循环20-1次相加是必然的.3.第一个数初始化为x=2,y=14.从第二个数开始:分子x=x+y分母y=x由于x的值发生变化,因此中间用变量a复制一下.5.重复上面的操作,直到循环结束.
有一分数序列2\/1,3\/2,5\/3,8\/5,13\/8,21\/13……求出这个数列的前20项...
解:∵分数序列为2\/1,3\/2,5\/3,8\/5,13\/8,21\/13,……∴令F(n)为斐波那契数列,有分数序列的通项公式为:a[n]=F(n+2)\/F(n+1)∵F(n)=(1\/√5)*{[(1+√5)\/2]^n - [(1-√5)\/2]^n} ∴a[n]={[(1+√5)\/2]^(n+2) - [(1-√5)\/2]^(n+2)}\/{[(1+...
C语言编程:有一分数序列:2\/1,3\/2,5\/3,8\/5,13\/8,21\/13...求出这个...
这个数 有点像斐波那契数列 ,首先 创建一个数组放分子分母 a[n]=1,2,3,5,8,13,21,44 这个数的 特点是 a[n]=a[n-1]+a[n-2];所以用for打表就行 然 分数 是 a[n+1]\/a[n] for一下 循环相加就行
有一分数序列 2\/1,3\/2,5\/3,8\/5,13\/8,21\/13,……求出这个数列的前20项...
首先看该数列的规律了,这个数列从第一项开始是2\/1,后面的项分母是前项的分子,分子是前项的分子加分母之和,依次下去20项的和就慢慢写出来算去吧,,我实在是没那个精力去算20项