#include <stdio.h>
//分析
//分母每次都为1,分母每一次递增1
//写一个for,每次生成一个数,然后把他们加起来
//第一次sum=0,i=1 sum = sum +1.0/1 =0+1=1此时sum==1
//第二次sum=1,i=2 sum = sum +1.0/2 =1+0.5=1.5
//第三次sum=1.5,i=3 sum =sum+1.0/3 =1.5+0.33
//每次sum都会继承上一次的值
int main()
{
int n =0;
scanf("%d", &n);
int i =0;
double sum = 0;
for(i = 1; i<= n;i++)
{
sum +=1.0/i; //1.0让其不为整型运算
}
printf("%lf",sum);
return 0;
} #include <iostream>
using namespace std;
#include <iomanip>
int main() {
int n;
cin >> n;
double sum = 0;
for(int i = n; i > 0; --i){
sum = sum + 1.0/i;
}
cout << fixed << setprecision(6)<<sum;
} #include <stdio.h>
int main()
{
int n = 0,i = 1;
float H = 0;
scanf("%d\n",&n);
for(i=1;i<=n;i++)
{
H = H + 1.0/i;
}
printf("%.6f",H);
return 0;
} #记录数字 the = int(input()) i = 0 sum = 0 while i < the: i += 1 sum += 1/i print(sum)
#include <iostream>
#include <cassert>
#include <iomanip>
double sum(int a)
{
if (a == 1)
{
return 1.0;
}
return sum(a - 1) + 1.0 / float(a);
}
int main()
{
int n;
std::cin >> n;
assert(n >= 1 && n <= 1000);
// // 方法1 for循环计算
// double sum = 0;
// for (int i = 1; i <= n; i++)
// {
// sum += 1.0 / float(i);
// }
// std::cout << std::fixed << std::setprecision(6) << sum << std::endl;
// 方法2 递归计算
std::cout << std::fixed << std::setprecision(6) << sum(n) << std::endl;
return 0;
}