System.out.println(i)是输出一个i就换行,而System.out.print(i)输出一个I接着下一个不换行
所要知道的算法:递归,迭代等;
递归有3个必备条件:
1.递归式
2.递归的出口条件
3.界限函数必须使得程序向出口递归.
Ctr+c可以用在dos上停止死循环。
数组:
一维数组的声明方式:type var[] 或 type[] var;
例如:int a[];
int[] a1;
double b[];
Mydate []c;
数组下表跟字符串一样,也是从0开始,最大下标值为数组长度减1。.
数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。
动态分类数组需要new, 静态分配数组不需要new。
class DiGui
{
/*
求指定的数的阶乘
*/
public int method(int n)
{
if(n==1) //表示1的阶乘还是1
{
return 1;
}
else //如果传入的参数不是1,就让它变成1;
{
return n*method(n-1);
}
}
public static void main(String args[])
{
int n=5;
DiGui d=new DiGui();
System.out.println(n+"的阶乘是"+d.method(5));
}
}
/*
求1到99的连加
*/
public class Test2
{
public int lianJia(int i)
{
if(i==1)
{
return 1;
}
else
{
return i+lianJia(i-1);
}
}
public static void main(String args[])
{
Test2 d = new Test2();
System.out.println(d.lianJia(99));
}
}
/*
家里有8个孩子,老大比老二大两岁,老二比老三大两岁,老三比老四大两岁。。。以此类推,老八6岁,问老大多大?
*/
public int qiu(int n)
{
if(n==8)
{
return 6;
}
else
{
return 2+qiu(n+1);//return 写成rerern,死人了!!!!!!!!!
}
}
public static void main(String args[])
{
int b=1;
DiGui d=new DiGui();
System.out.println(d.qiu(b));
}
}
/*
求Fibonacci数列: 1, 1, 2, 3, 5, 8, …第40个数的值。
*/
class DiGuiEx4
{
public int Ex4(int n)
{
if(n==1)
{
return 1;
}
if(n==2)
{
return 1;
}
else
{
return Ex4(n-1)+Ex4(n-2);
}
}
public static void main(String args[])
{
DiGuiEx4 d = new DiGuiEx4();
System.out.println(d.Ex4(40));
}
}
class ShuZhu
{
public static void main(String wanghui[])
{
String[] s = new String[5];//动态创建数组,数组定义与为数组元素分配空间并赋值的操作分开进行
int ss[] = {6, 5, 4, 3, 2, 1};//静态创建数组,在定义数组的同时就为数组元素分配空间并赋值
s[0] = "王惠";
s[1] = "王鹏";
s[2] = "王成国";
s[3] = "王丽君";
s[4] = "王文";
for(int i = 0; i<s.length; i++)
{
System.out.println(s[i]);
}
for(int i = 0; i<ss.length; i++)
{
System.out.println(ss[i]);
}
}
}
/*
新型for循环
*/
class Test1
{
public static void main(String args[])
/*
{
int[] sz = {1,2,3,4,5};
for(int i:sz)
{System.out.println(i);}
}
*/
/*
求1到99的连加,For循环
*/
int sum=0;//因为是局部变量,要使用必须赋予初值
for(int i=1; i<=99; i+=2)
{
{
sum+=i;
}
System.out.println("1+3+5+...+99的值是"+sum);
}
}
/*
求1到99的连加,递归做法
*/
public class Test2
{
public int lianJia(int i)
{
if(i==1)
{
return 1;
}
else
{
return i+lianJia(i-1);
}
}
public static void main(String args[])
{
Test2 d = new Test2();
System.out.println(d.lianJia(99));
}
}
public class Test
{
public static void main(String argv[])
{
int a[]= new int[5];
System.out.println(a[3]);//输出为0,数组的每个元素也被按照成员变量同样的方式被隐式初始化。
}
}
/*
母兔子第三个月生一个小兔,生完第一个后每个月生一个小兔子。小兔子第三个月生一个小小兔子,小兔子生完 第一个后每个月生一个。
求第八个月农场有多少兔子。提示:找规律,数字跟数字之间的规律。
第一个月 第二个月 第三个月 第四个月 第五个月 第六个月 第七个月 第八个月
1 1 2 3 5 8 13 21
*/
public class TuZi
{
public int sheng(int n)
{
if(n==1)
{
return 1;
}
if(n==2)
{
return 1;
}
else
{
return sheng(n-1)+sheng(n-2);//
}
}
public static void main(String args[])
{
TuZi d = new TuZi();
int month = 8;
System.out.println("第"month"个月农场共有"+d.sheng(month)+"只兔子");
}
}
/*
一直猴子每天吃树上的一半桃子,再扔一个,每天如此,第十天剩下一个桃子,问这棵树上一共有多少桃子。
1 2 3 4 5 6 7 8 9 10
2*(2*(2i+2)+2+1) 2*(2*(i+1)+1) 2*(i+1) i=1
2*(2*(2i+2)+2)+2 2*(2i+2)+2 2i+2
3i 2i i
*/
class TestTaoZi
{
public int taozi(int n)
{
if(n==10)
{
return 1;
}
//return 1+2*taozi(n+1);//这是先扔后吃的算法
return 2*taozi(n+1)+2;//这是先吃后仍的算法,taozi(n+1)当成是后一天的桃子数
}
public static void main(String args[])
{
TestTaoZi d = new TestTaoZi();
int i = 1;
System.out.println(d.taozi(i));
}
}