c语言求教!!!!! 10
6、编写程序完成功能:求Fibonacci数列中大于a(a>3)的最小的一个数。
其中Fibonacci数列F(n)的定义为:
F(0)=0,F(1)=1
F(n)=F(m-1)+F(m-2)
例如,当a=500时,函数值为610。 展开
先占位置 保留四位小数的结果为1.1724
第五题
第五题程序
#include "stdafx.h"
#include <stdio.h>
int main()
{
int i=0;
float sum=0.0;
for(i=1;i<1000;i++)
{
if((i%7==0&&i%11!=0)||(i%7!=0&&i%11==0))
sum+=1.0/i;
}
printf("\n1000以内能被7整除或被11整除\n\n但是不能同时整除的自然数的倒数之和为:%0.4f\n\n",sum);
return 0;
}
第六题程序
#include "stdafx.h"
#include <stdio.h>
int Fibonacci(int a)//求费布拉奇数的函数
{
int sum=0;
if(a==0||a==1) return 1;
else return Fibonacci(a-2)+Fibonacci(a-1);
}
int main()
{
int a,i,k=0;
printf("请输入一个整数\n");
scanf("%d",&a);
for(i=0;k<a;i++)
{
k=Fibonacci(i);
}
printf("小于%d的费布拉奇数为%d\n",a,k);
return 0;
}
不懂可追问 烦请采纳 谢谢
float sum=0;
for(i=1;i<1000;i++)
{
if (((i%7)==0 && (i%11)!=0) || ((i%7)!=0 && (i%11)==0))
sum+=1/(float)i;
}
如果为了追求效率,可以直接先运算,然后一步求出答案;
(1+1/2+1/3+1/4+...+1/n)*1/7且n*7<1000--->n=142
(1+1/2+1/3+1/4+...+1/n)*1/11且n*11<1000--->n=90
(1+1/2+1/3+1/4+...+1/n)*1/77且n*77<1000--->n=12
(1+1/2+1/3+1/4+...+1/n)=γ + ln(n) (γ =0.5772156649)
所以即求: γ+ln(142)/7+ln(90)/11-ln(12)/77
float sum;
sum = 0.5772156649+log(142)/7+log(90)/11-log(12)/77
第六题就是递归了。
int fibo(int n){ assert(n >= 0); return n < 2 ? n : fibo1(n - 1) + fibo1(n - 2);
}
但是效率低。
sum=0,
for(i=1,i<1000,i++){
if(i%7==0&&i%11!=0)
sum=sum+1/i:
if(i%7!=0&&i%11==0)
sum=sum+1/i
}
这样最后的sum就是结果。
第六题是递归思想,你先把递归函数编出来,然后输入a,i=Fibonacci(a),i就是结果。