数列基本算法

等差数列
中心思想:累加法,公式法
1:累加法:

/*
  需求:1+2+3+4+5+......10
       思想:
           1,每次参与的加法的数值不确定
           2,每次出现的和的数据也不确定
           3,每次参与加法的数值有递增规律
           4.,每一次都是加法运算在重复,并且都是和在加上下一个数值
           
       步骤:
             1,定义一变量,记录参与加法运算的数据
             2,定义一个变量,记录每一次出现的和
             3,对于记录参与加法运算的数据自增
             4,因为加法运算需要重复
*/

// 第一种:while循环
public class Demo1{
   public static viod mian(String[] args){
   int x=1;
   int num=0;
   while(x<=10){
      num =num+x;
      x++;
      }
      System.out.println("和是:"+num)
   } 
}

//for循环
public class Demo1{
   public static viod mian(String[] args){
       int  num=0;
        for(int x=1;x<=10;x++){
            num = num+x;
         }
      System.out.println("和是:"+num)
   } 
}




2:公式法:公式法其实很简单
等差数列的前n项和的公式为: Sn=na1+nd(n-1)/2 N属于正整数

/*
  例题:2+4+8+10+...... ;求此数列前·10项的和
*/
public class Demo1{
   public static viod mian(String[] args){
      int a1=2;
      int  n=10;
      int d=2;
     int num=0;  //和
     num=10*2+(10*2*9)/2;
     System.out.println("前十项和为:”+num);
      
}

等比数列
思想:嵌套循环思想
(1)

import java.util.Scanner;

//1 + 2^1 + 2^2 + 2^3 + ... 2^n
public class demo11 {

	public static void main(String[] args) {
		int i, j, mul,sum=1;
		Scanner input = new Scanner(System.in);
		int n = input.nextInt();
		//2的次方等于1
		if(n == 0) {
			sum =1;
		}else {
			for(i=1;i<n;i++) {
				//第一项为1
				mul =1;
				//之后的每一项为2的i次方
				for(j=1;j<=i;j++) {
					mul = mul *2;
				}
				sum = sum +mul;
			}
		}
		System.out.println(sum);

	}
}

(2)

/*
   输入整数a,输出结果s,其中s与a的关系是:s=a+aa+aaa+aaaa+aaa...a,
   最后为a个a。丽日a=2时,s=2+22=24;
   要求:使用循环语句实现, a由键盘输入,且2≤a≤9
   
   思想:输入2就是两个数 输入三就是三个数
    例如:2+22
 */

public class demo4 {

	public static void main(String[] args) {
	    int a, s=0,t,i,j;
	    System.out.println("请输入a的值");
	    Scanner sr = new Scanner(System.in);
	    a= sr.nextInt();
	    for(i=1;i<a;i++) {
	    	t=a;
	    	//求i个a的值
	    	for(j=0;j<i;j++) {
	    		t *=10;
	    		t +=a;
	    	}
	    	System.out.println("+"+t);
	    	//求和
	    	s += t;
	    }
	    System.out.println("和为:"+(s+a));
	}
}

猜你喜欢

转载自blog.csdn.net/qq_45760909/article/details/108414856