这是我正在处理的序列:
Un+1 = 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;
}
感谢您的帮助,这是解决方案!
关于arrays - 使用一个函数将序列 3Un² + 2Un +1 的前 n 个值存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77634525/