2017-10-06 56 views
-2

給定以下系列:1,2,5, 26,677, .....使得該系列的第n項等於 (n-1)th^2 +1並且該系列的第一項是1. 使用名爲f的遞歸函數編寫程序來計算第n期。使用循環打印系列中前n個項的f 的值。你將從用戶那裏獲得輸入n。給定以下系列...系列的第n項等於(n-1)th^2 +1並且系列的第一項是1使用遞歸

任何人都可以幫我弄清楚我到底在做什麼?我不知道如何用遞歸來做到這一點,我知道如何做到這一點。

感謝, 牛逼

編輯:我知道了做序列現在,我只是不知道如何解決它那裏是一個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

開始你已經嘗試過的東西。 –

+0

該規則是以遞歸方式編寫的。這就像將它複製並粘貼到你的函數中一樣。 –

+0

你能告訴我如何實現它嗎?我不確定我明白遞歸的樣子。@EugeneSh。 – tidwellxyz

回答

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; 
} 
+0

我剛剛用我找到的解決方案編輯它,但我無法獲得前5個數字的for循環。任何想法? – tidwellxyz

相關問題