lol仲裁圣女多少钱:各位c高手,俺有个小问题,挺急的,就是x(n)=ax(n-1)+bx(n-2)的算法

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 20:15:48
a,b是常数,括号里是下标,通项挺难求的.俺先谢谢大伙了,跪谢,跪谢哈.
n最大30,随便吧1,2

/*这个范围不大,数字稍大点就要用高精度来表示了*/
#include<stdio.h>
#define MAXN 100

int main()
{
int x[MAXN];
int i,n,a,b;
x[0]=1;
x[1]=2;
printf("a=?");
scanf("%d",&a);
printf("b=?");
scanf("%d",&b);
printf("n=?");
scanf("%d",&n);
for(i=2;i<=n;++i) x[i]=a*x[i-1]+b*x[i-2];
printf("x(n)=%d\n",x[n]);
getch();
return 0;
}

#include <stdio.h>
#include <stdlib.h>
/*直接拷贝过去运行就可以了,我已经测试成功!
n值和x(0),x(1)都是自己可定义的.
a ,b用的是宏定义,可修改*/
#define a 10
#define b 20
void main()
{
int n;
int *x;
int i;
printf("请输入n的值:");
scanf("%d",&n);
if(n>=0)
x=(int *)malloc(n*sizeof(int));
else
{
printf("输入的n值错误!");
return ;
}
printf("请输入x(0)的值:");
scanf("%d",x);
printf("请输入x(1)的值:");
scanf("%d",x+1);
for(i=2;i<n;++i)
{
x[i]=a*x[i-1]+b*x[i-2];
}
printf("现在输出各项的值:\n");
for(i=0;i<n;++i)
{
printf("x(%d)的值为:%d\n",i,x[i]);
}
free(x);
system("pause");
}