题目:写一个函数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...求高手指教!!!
8 个解决方案
#1
第一题
#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);
}
#2
第二题
#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);
}
#3
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);
}
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);
}
#4
2.void printNum(n)
{
if(n==0)
return;
else
{
for(i=0;i<n;i++)
printf("%d ",n);
printf("\n");
printNum(n-1);
}
}
{
if(n==0)
return;
else
{
for(i=0;i<n;i++)
printf("%d ",n);
printf("\n");
printNum(n-1);
}
}
#5
好强!!!但为什么总是生成不成功???
#6
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);
#7
好呢吧~~~谢谢大神~~~~~~
#8
还想请教大神,我是大一的刚刚接触编程,上课老师讲的和书上写的都大致听得懂看得懂,但要我自己写起来还是无从下手,肿么办呢~~~
#1
第一题
#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);
}
#2
第二题
#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);
}
#3
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);
}
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);
}
#4
2.void printNum(n)
{
if(n==0)
return;
else
{
for(i=0;i<n;i++)
printf("%d ",n);
printf("\n");
printNum(n-1);
}
}
{
if(n==0)
return;
else
{
for(i=0;i<n;i++)
printf("%d ",n);
printf("\n");
printNum(n-1);
}
}
#5
好强!!!但为什么总是生成不成功???
#6
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);
#7
好呢吧~~~谢谢大神~~~~~~
#8
还想请教大神,我是大一的刚刚接触编程,上课老师讲的和书上写的都大致听得懂看得懂,但要我自己写起来还是无从下手,肿么办呢~~~