撰寫一個名為 cpSeries 的方法/函式,它計算一系列數字中的第 n 個元素,由公式給出:a(n) = (a(n-1))2 a(n-2) 當:n>1并假設: a(1)=1, a(0)=0 請注意,系列的索引從 0 開始。
我已經撰寫了上面的代碼,但它運行了無限時間,我不知道如何修復它以計算第 n 個元素。
有任何想法嗎?我必須只使用函式來解決這個問題。
# include <stdio.h>
int cpSeries(int n)
{
int Nthterm = 0;
int i;
if (n==0) {
cpSeries(0) == 0;
}
else if (n==1) {
cpSeries(1) == 1;
}
for (i=0; i<=n; i ){
Nthterm = cpSeries((n-1))*cpSeries((n-1)) cpSeries((n-2));
return Nthterm;
}
}
int main()
{
int n=6;
printf("The Nth term of the series is: %d",cpSeries(n));
}
uj5u.com熱心網友回復:
您的最終條件只是再次呼叫該函式,而不是回傳 0 或 1。
代替
if (n==0) {
cpSeries(0) == 0;
}
else if (n==1) {
cpSeries(1) == 1;
}
利用
if (n==0) {
return 0;
}
else if (n==1) {
return 1;
}
uj5u.com熱心網友回復:
C 不是一種宣告性語言,您可以通過撰寫類似的東西來指定給定引數y的函式的回傳值,但您必須使用 return 陳述句。fxf(x) = y
更改cpSeries(0) == 0;為
return 0;
避免無限遞回(對于 也是如此n == 1)。
uj5u.com熱心網友回復:
如果提供的方程式為您提供了第 n 個元素,我認為不需要回圈。
此外,在 if 條件下,您再次呼叫該函式,但您應該做的是回傳您需要的值。
int cpSeries(int n){
int Nthterm;
if (n==0){
Nthterm = 0;
}
else if (n==1){
Nthterm = 1;
}
else {
Nthterm = cpSeries((n-1))*cpSeries((n-1)) cpSeries((n-2));
}
return Nthterm;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524589.html
標籤:C
