鉴于以下系列: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);
}
答案 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;
}