package Test2;
//算法:Algorithm
public class Algorithm
{
public static void main(String[] args)
{
Exhaustivity ex = new Exhaustivity(); //实例化对象
ex.deal(); //用对象名调用方法
System.out.println("----------------");
Recursive rs = new Recursive();
System.out.println(rs.triangle(4));
}
}
/* 穷举:Exhaustivity
* 依次查询所有可能情况来获得目标值
* 查询过程要无遗漏,不重复
* 在有明显得条件可以优化的前提下还是应该尽量优化程序
*/
class Exhaustivity //穷举(Exhaustivity):查找1-100以内的质数
{
public void deal() //deal:交易、处理
{
System.out.println(2); //1-100中1不是质数,2一定是,所以先输出2,并且其后的偶数也都不是质数
for(int i=3;i<100;i++) //所以输出2后直接从3开始只取奇数进行检验
{
if(isPrimeNumber(i)) //isPrimeNumber判断是否为质数
{
System.out.println(i); //输出质数
}
}
}
private boolean isPrimeNumber(int n)
{
for(int i=2;i<Math.sqrt(n)+1;i++) //sqrt(double a)返回正确舍入的 double 值的正平方根。
{
if(n%i==0)
{
return false;
}
}
return true;
}
}
/* 递归:Recursive
* 方法直接或者间接调用其自身的方法叫做递归
* 每次递归调用都要使问题简单化
* 当递归达到某种程度后能够的到一个已知解以结束递归调用
*/
class Recursive //递归(Recursive):解决三角数字Sn=Sn-1+n
{
public int triangle(int num) //triangle:三角关系
{
if(num == 1) //当n=1时,Sn=1
{
return 1;
}
else //当n>1时,Sn=Sn-1+n
{
return triangle(num-1)+num; //方法里直接调用自身方法
}
}
}
浙公网安备 33010602011771号