问题 解答题

已知{an}是公比为q的等比数列,且am、am+2、am+1成等差数列.

(1)求q的值;

(2)设数列{an}的前n项和为Sn,试判断Sm、Sm+2、Sm+1是否成等差数列?并说明理由.

答案

(1)q=1或-.(2)当q=1时,Sm , Sm+2 , Sm+1不成等差数列;q=-时,Sm , Sm+2 , Sm+1成等差数列.

题目分析:(1)根据三数成等差数列,列出等量关系:2am+2=am+1+a∴2a1qm+1=a1qm+a1qm – 1在等比数列{an}中,a1≠0,q≠0,∴2q2=q+1,解得q=1或-.(2)根据等比数列前n项和公式分类讨论:若q=1,Sm+Sm+1=ma1+(m+1)a1=(2m+1)a1,Sm+2=(m+2)a1∵a1≠0,∴2Sm+2≠S m+Sm+1若q=- ,Sm+2·a1·a1,Sm+Sm+1·a1·a1·a1·a1∴2 Sm+2=Sm+Sm+1

解:(1)依题意,得2am+2=am+1+a∴2a1qm+1=a1qm+a1qm – 1

在等比数列{an}中,a1≠0,q≠0,∴2q2=q+1,解得q=1或-. 

(2)若q=1,Sm+Sm+1=ma1+(m+1)a1=(2m+1)a1,Sm+2=(m+2)a1

∵a1≠0,∴2Sm+2≠S m+Sm+1

若q=-,Sm+2·a1·a1

Sm+Sm+1·a1·a1·a1

·a1  ∴2 Sm+2=Sm+Sm+1

故当q=1时,Sm , Sm+2 , Sm+1不成等差数列;q=-时,Sm , Sm+2 , Sm+1成等差数列.

选择题
填空题

阅读下列说明和Java代码,将应填入 (n) 处的字句写在对应栏内。

[说明]

某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图6-1所示。

现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中增加新的餐饮形式,得到如图6-2所示的类图。其中MenuComponent为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。类Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图6-1中的甜点菜单。类MenuItem表示菜单中的菜式。

[Java代码]

import Java.util.*;

(1) MenuComponent

protected String name;

(2) ;//添加新菜单

public abstract void print(); //打印菜单信息

public String getName()return name;

class MenuItem extends MenuComponent

private double price;

public Menultem(String name, double price)

this.name=name; this.price=price;

public double getPrice() return price;

public void add(MenuComponent menuComponent)return;//添加新菜单

public void print()

System.out.print(""+getName());

System.out.println(","+getPrice());

class Menu extends MenuComponent

private List<MenuComponent>menuComponents=new ArrayList<MenuComponent>();

public Menu(String name)this.name=name;

public void add(MenuComponent menuComponent) //添加新菜单

menuComponents. (3) ;

publiC void print()

System.out.print(“\n"+getName());

System.out.println(","+"-------------------------");

Iterator iterator=menuComponents.iterator();

while(iterator.hasNext())

MenuComponent menuC0mponent=(MenuComponent)iterator.next();

(4) ;

Class MenuTestDrive

public static void main(String args[])

MenuComponent allMenus=new Menu("ALL MENUS");

MenuComponent dinerMenu=new Menu("DINER MENU");

…//创建更多的Menu对象,此处代码省略

allMenus. add(dinerMenu); //将dinerMenu添加到餐厅菜单中

…//为餐厅增加更多的菜单,此处代码省略

(5) ; //打印饭店所有菜单的信息

文中(1)处应为()。