使用一个函数将序列 3Un² + 2Un +1 的前 n 个值存储在数组中

问题描述 投票:0回答: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 。 在输出中我输入了该术语,但数组没有显示

arrays c performance sequence
1个回答
0
投票
#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;
}

感谢您的帮助,这是解决方案!

© www.soinside.com 2019 - 2024. All rights reserved.