69,369
社区成员
发帖
与我相关
我的任务
分享
/*递归做法,不大可取~
*/
#include <stdio.h>
#include <stdlib.h>
int fun(int n)
{
if(n==1)
{
return 10;
}
if(n==2)
{
return -3;
}
else return 3*fun(n-1)+fun(n-2);
}
int main()
{
int i;
int s=0;
for(i=1;i<=20;i++)
{
s+=fun(i);
}
printf("%d\n",s);
return 0;
}
/************
此题可以用递归,也可以用迭代
**************/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num1=10;
int num2=-3;
int num3;
int s=7; //前两项的和
int i;
for(i=1;i<=18;i++)
{
num3=num2+(3*num1);
s+=num3;
num1=num2; //把三项当中下标最小的用第二小的替换
num2=num3; //把三项当中下标最大的替换第二小的数
}
printf("%d\n",s);
return 0;
}
main()
{
int a[21],i,sum;
a[1]=10,a[2]=-3;
sum=a[1]+a[2];
for(i=3;i<=20;i++)
{
a[i]=3*a[i-1]+a[i-2];
sum+=a[i];
}
printf("%d",sum);
getch();
}
int a1,a2,a;
a1=10;
a2=-3;
sum = a1+a2;
for(n=3;n<=20;n++) {
a = 3*a2 + a1;
sum += a;
a1=a2;
a2=a;
}
printf("The sum is %d\n",sum);
//这个题目是绝对不应该用递归的,太慢了,否则只能叫舍本逐末!!
#include<stdio.h>
int a(int n)
{
if(n==1)
return 10;
if(n==2)
return -3;
return (3*a(n-1)+a(n-2));
}
int main()
{
int sum=0;
int n;
for(n=1;n<=20;n++)
sum+=a(n);
printf("The sum is %d\n",sum);
return 0;
}