4-3-1 求和--1/n-println换行是对后一个输出起作用--减一个1/(n-1)加一个1/n
来源:互联网 发布:域名快速备案 编辑:程序博客网 时间:2024/05/14 15:45
求和
有明确次数范围,用for循环
用i += 1
算1/n 加起来
自己写的:
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int i; int sum = 0; for ( i = 1; i <= n; i += 1) { sum += (1/i); } System.out.println(sum); }}
输入3输出1
错:
1.总和是浮点数(double)
double sum = 0.0;
2.除法要浮点数
<pre name="code" class="java"> sum += 1.0/i;
改良:
3.i可以在for定义for (int i = 1;i <= n; i += 1)
4.不用括号也可以
sum += 1.0/i;
5.i++
for (int i = 1;i <= n; i ++)
修改后
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); double sum = 0.0; for (int i = 1;i <= n; i ++) {<pre name="code" class="java"> sum += 1.0/i;} System.out.println(sum); }}
改善:保留小数点2位
System.out.printf( "%.2f",sum);
最终,两个都看一下
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); double sum = 0.0; for (int i = 1;i <= n; i ++) { sum += 1.0/i; } <p class="p1"><span></span> System.<span class="s1">out</span>.println(<span class="s2">sum</span>);</p><p class="p1"><span></span> System.<span class="s1">out</span>.printf( <span class="s3">"%.2f"</span>,<span class="s2">sum</span>);</p> }}
输入100
输出
5.187377517639621
5.19
System.out.printf( "%.2f",sum); System.out.println(sum);
测试后新发现:
System.out.print(sum); System.out.printf( "%.2f",sum); System.out.println(sum); System.out.print(sum);
这样,输出的后一个不会换行
输入100
输出
5.1873775176396215.195.187377517639621
5.187377517639621
System.out.println(sum);println换行作用的是后一个输出
改题:如果不是求和,是-一个+一个怎么写(或者想成加一个正的,加一个负的)
自己写的(思路1):
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); double sum = 0.0; for (int i = 1;i <= n; i ++) { if (i % 2 == 0 ) { sum -= 1.0/i; } else { sum += 1.0/i; } } System.out.println(sum); System.out.printf( "%.2f",sum); }}
老师后来也提到这个思路,与自己想稍有不同:
if (i % 2 == 1 ) { sum += 1.0/i; } else { sum -= 1.0/i; }
老师讲的(思路2)——比自己的简洁好多:
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); double sum = 0.0; int sign = 1; for (int i = 1;i <= n; i += 1) { sum += sign * 1.0/i; sign = -sign; } System.out.println(sum); System.out.printf( "%.2f",sum); }}
改良——移动sign的动作:
for (int i = 1;i <= n; i += 1,sign = -sign) { sum += sign * 1.0/i; }
留意:
1.中间用逗号
2.删掉分号
循环体和第三部分可以互换
0 0
- 4-3-1 求和--1/n-println换行是对后一个输出起作用--减一个1/(n-1)加一个1/n
- 输出n! n为用户输入的一个正整数 n! = n*(n-1)*(n-2)*...*1 5! = 5*4*3*2*1 = 120
- 输入一个数n,输出1~n的全排列
- 用Python实现一个1加到n求和功能的函数
- 求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。
- 求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。
- 求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。
- 求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。
- n是一个奇数,求证n(n^2-1)能被24整除
- 网易面试题:n是一个奇数,求证n(n^2-1)能被24整除
- n是一个奇数,求证n(n^2-1)能被24整除
- n是一个奇数,求证n(n^2-1)能被24整除
- 实现一个函数,对一个正整数n,算得到1
- 输入一个n,输出结果1 2 3---经典算法
- matlab中padarray函数用法:实现对一个n*n矩阵扩充为(n+1)*(n+1)的矩阵
- 输出1/n的小数位,是循环小数输出一个循环节
- 顺序输出从1到N位的所有数字(N可能是一个大数位)。
- n&n-1 n&-n
- 别人创业的故事
- Java核心类库——IO原理和用法
- css hack全解,最齐全的ie css hack方式讲解
- .net中的域Area
- 将数据从PostgreSQL同步到Elasticsearch的经验总结
- 4-3-1 求和--1/n-println换行是对后一个输出起作用--减一个1/(n-1)加一个1/n
- JAVA实现AES加密
- 使用 viewport meta 标签在手机浏览器上控制布局
- Android中Fragment用法
- startActivityForResult用法
- 公司绝不会告诉你的20大秘密值得一看很受用
- html5学习资料
- 共享文件系统以及NFS介绍和使用
- Android学习系列(43)--使用事件总线框架EventBus和Otto