这是我正在处理的序列:3Un² + 2Un +1 | U₀ = 1 我得到的第一个想法是一个停止条件为 n!=0 的递归函数 问题是我想将每个项的值存储在同一函数的数组中,以便稍后可以打印它
#include<stdio.h>
#include<stdlib.h>
unsigned long long* Sequence(int n, unsigned long long* T){
while(n!=0){
T[n--]=3 * (*(Sequence(n-1,T)+n-1)) * (*(Sequence(n-1,T)+n-1)) + 2 * (*(Sequence(n-1,T)+n-1)) + 1;
} *T=1;
return T;}
int main(){
int n;
printf("Enter your sequence term : ");
scanf("%d",&n);
unsigned long long *T = (unsigned long long*)malloc(sizeof(unsigned long long)*(n+1));
T=Sequence(n,T);
//Printing values
printf("[ ");
for(int i=0;i<=n;i++) printf("%5llu ",*(T+i));
printf(" ]");
free(T);
return 0;
}
由于从序列中获得的数字很大,所以我使用了 unsigned long long 。 在输出中我输入了该术语,但数组没有显示
#include<stdio.h>
#include<stdlib.h>
unsigned long long* Sequence(int n){
unsigned long long* T=(unsigned long long*)malloc(sizeof(unsigned long long)*(n+1));
if(T==NULL){
printf("Problem while allocating memory ! ");
exit(1);
}
T[0]=1;
for(int i=1;i<=n;i++) T[i]=3*T[i-1]*T[i-1]+2*T[i-1]+1;
return T;
}
int main(){
int n ;
unsigned long long *T;
printf("Enter your term : ");scanf("%d",&n);
T=Sequence(n);
printf("[ ");
for(int i=0;i<=n;i++) printf("%5llu ",*(T+i));
printf(" ]");
free(T);
return 0;
}
感谢您的帮助,这是解决方案!