首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

生手作业~求教~

2012-12-14 
新手作业~~求教~~1.函数题目:写一个函数sum(n), 返回值类型为double。对分数序列3/2,9/4,12/8,15/16, ……(请

新手作业~~求教~~
1.函数
题目:写一个函数sum(n), 返回值类型为double。对分数序列3/2,  9/4,12/8,  15/16, ……(请自行分析该序列的特点)进行求和。
例如sum(1)=3/2
     sum(2)=3/2+9/4
     sum(3)= 3/2+9/4+12/8

打印sum(20)和sum(30).

2.递归
题目:写一个递归函数printNum(n)打印:
printNum(1)
1
printNum(2)
2  2
1
printNum(3)
3   3   3
2   2
1
printNum(4)
4   4   4   4
3   3   3
2   2
1

耗了一上午了,还是一点没头绪...T T...求高手指教!!!
[最优解释]
第一题


#include<stdio.h>
#include<math.h>
double  sum(int n)
{
double num=0;
int  i;
for(i=1;i<=n;i++)
{
if(i==1)
{
num=(double)3/2;
}
else
{
num+=3*(i+1)/pow(2,i);
}
}
return  num;
}
main()
{
int i;
double  result;
scanf("%d",&i);
result=sum(i);
printf("%f",result);

}

[其他解释]
第二题

#include<stdio.h>
void printNumber(int n)
{
int i;
if(n>0)
{
for(i=0;i<n;i++)
{
printf("%d ",n);
}
printf("\n");
printNumber(n-1);
}
else
return;
}

main()
{
int i;
scanf("%d",&i);
printNumber(i);
}

[其他解释]
1.#include<math.h>
 for(i=0;i<n;i++)
   sum+=(double)(3*(i+1))/pow(2,i+1);
2.void printNum(n)
{
   if(n==0)
     return;
   for(i=0;i<n;i++)
      printf("%d ",n);
   printNum(n-1);
}
[其他解释]
2.void printNum(n)
{
   if(n==0)
     return;
   else
   {
   for(i=0;i<n;i++)
      printf("%d ",n);
   printf("\n");
   printNum(n-1);
  }
}
[其他解释]
好强!!!但为什么总是生成不成功???
[其他解释]
引用:
好强!!!但为什么总是生成不成功???

 for(i=1;i<=n;i++)
    {
        if(i==1)
        {
            num=(double)3/2;
        }
        else
        {
            num+=3*(i+1)/pow(2,i);
        }
    }错了
改成 for(i=0;i<n;i++)
   sum+=(double)(3*(i+1))/pow(2,i+1);
------其他解决方案--------------------


好呢吧~~~谢谢大神~~~~~~
[其他解释]

引用:
引用:好强!!!但为什么总是生成不成功???
 for(i=1;i<=n;i++)
    {
        if(i==1)
        {
            num=(double)3/2;
        }
        else
        {
            num+=3*(i……
还想请教大神,我是大一的刚刚接触编程,上课老师讲的和书上写的都大致听得懂看得懂,但要我自己写起来还是无从下手,肿么办呢~~~

热点排行