-
include 遞迴覆蓋 power() 函式,以便它可以輸出負指數。
double power(double n,int p)double pow,s;
if(n==0&&p ||n==1)
return n;
else if(p>0) {
pow=n*power(n,p-1);
return pow;
else if(p<0) {
s=power(n,-p);這個地方有錯誤!!
return 1/s;
else return 1;
int main (void)
double x;
int n;
scanf("%lf%d",&x,&n);
power(x,n);
printf("%.3lf to the power %d is %.5lf",x,n,power(x,n));
return 0;
房東還應該注意,0 的冪是 1
-
else y=1/x*power(x,n+1);操作順序為 (1 x)*power(x,n+1); x 是負數,1 x 是沒有意義的,自然會摺疊 此外,scanf 的雙引號中的內容不需要逗號。
-
int ex(int a)
這一段只設定了a不等於1的條件,即函式巢狀,而沒有考慮a=1時的情況,即a=1時應返回1。
將其替換為如下所示:int ex(int a)。
elsereturn 1;}
-
include 檢視您的環境以及需要哪些標頭檔案。
int ex(int a)
int main()
-
b 沒有分配初始值,遞迴約束也不完美。 因此:1.當函式ex()中的a>1,b賦值為ex(a-1)*a時,結果是正確的; 2. 當 a=1 時,b 未賦值,b 輸出隨機值; 3.當a<1時,由於b=ex(a-1)*a,且結束條件為a==1,它將無限遞迴,成為無限迴圈。
此外,函式宣告應位於函式體之外。
-
第四行:int ex(int a); 為什麼?
函式宣告? 它應該寫在 main 函式之外。
-
這也可以計算到功率。
#include
main()
至於你的程式,你放倒數第二行**。
pow=n*power_negative(n,q-1);
更改為 PoW=N*Power Positive(N,Q-1); 試試吧。
-
有人已經幫你改正了,所以我會在**中指出你的錯誤。
if(q>0)
pow=n*power_negative(n,q-1);
re=1/pow;
然而,從表面上看,這是真的,根據 re=1 pow。 那麼前面的都應該對權力是積極的。 例如,(-3) 第乙個迴圈 p1=a*p(a,-2)、第二個迴圈 p2=a*(a,-1) 和第三個迴圈,而遞迴至少有乙個特定值,當某個值是特定的並且不能一直呼叫時。
暫且不考慮具體值,上一次我們重新=1 pow,之前的pow是多少??? 邏輯混亂...... 你應該考慮一下。
這個程式用遞迴實現實在是多餘,當然你正在訓練遞迴,建議你用遞迴來練習。
-
Brother:這是因為最終的返回值根本不是你想返回的數字,比如你把返回值改成return,結果還是原來的結果。
在遞迴術語中,只有第一次執行的函式才能返回最終結果返回的值,其他函式的返回值不可能是最有效的函式,例如您的函式。
大概過程是這樣的。
f( ) 我會稍微改變你的,你的會起作用的。
#include
#include
float f(int i, float a)else }
int main()
-
您一次都沒有宣告函式名稱。
-
提醒一下,沒有跳出交付宣告,因此迴圈繼續。
-
在 n 為整數的情況下,當 n 大於 1 時,(1 (n-1))+1 n) 的值必須為 0,當 0 傳遞到函式中時,將出現類似 1 0 的錯誤。
-
遞迴函式,如果不在裡面加return就錯了,遞迴就計算到最低級別,然後帶著return返回,逐層返回結果!!
簡而言之,遞迴是指應用程式呼叫自身來查詢和訪問分層資料結構。 使用遞迴可以使**更加簡潔明瞭,可讀性更強(不一定適合初學者),但是因為遞迴需要系統棧,所以空間消耗比非遞迴要大得多,如果遞迴深度太大,系統資源可能不夠用。 >>>More
分號是語句結尾的符號,但迴圈後不使用分號,if、and 子函式如 long long a (int b) 等,其他所有都用了,但不能加兩個分號,雖然不會造成錯誤,但可能會影響結果。