给定以下系列...系列的第n项等于(n-1)th ^ 2 +1,系列的第一项是1使用递归

时间:2017-10-06 21:15:07

标签: c recursion

鉴于以下系列:1,2,5,26,677, .....这样系列的第n个项等于 (n-1)th ^ 2 +1,该系列的第一项为1。 使用名为f的递归函数编写程序来计算第n个术语。用于循环打印 f的值 该系列中的第一个术语。您将从用户处获取输入n。

任何人都可以帮我弄清楚我到底在做什么吗?我不知道如何通过递归来做到这一点,我知道如何不用它。

谢谢, 吨

编辑:我现在已经完成了序列,我只是不知道如何修复它,其中有一个for循环执行此序列的前5个然后递归函数执行其余:

#include <stdio.h>
#include <math.h>

double f(double n);

int main(){
/*
    Problem 6:
    - Recursive function to generate nth term of f(x)
*/

double nth;
int i = 0,flag=1;
double result;
int seq[] = {1,2,5,26,677};

printf("Please enter the number of terms you would like to generate: 

\n");

    while(flag == 1){
        if(scanf("%lf",&nth) == 1){
            flag = 0;
        }
        else{
            printf("Invalid number, program is exiting...\n");
            return 0;
        }
    }

    result = f(nth);

    return 0;
}


double f(double n){
    // base condition
    if(n == 1)
        return 1;
    else
        printf("(%.0lf)",pow(f(n-1),2.0) + 1);
}

1 个答案:

答案 0 :(得分:1)

你可以在一行中完成

#include <stdio.h>

size_t f(size_t nth) {
  return nth == 1 ? 1 : f(nth - 1) * f(nth - 1) + 1;
}

int main() {
  printf("%zu", f(5));
  return 0;
}