C語言練習 7

2021-09-30 17:09:36 字數 1767 閱讀 2437

1.遞迴和非遞迴分別實現求第n個斐波那契數。

非遞迴:

int fibnotrecursion(int n)

int prenum = 1;

int preprenum = 1;

int result = 1;

for (int i = 2; i < n ; i++)

return result;

}

遞迴:

int fibrecursion(int n)

if (n == 1 || n == 2)

return fibrecursion(n - 1) + fibrecursion(n - 2);

}

2.編寫乙個函式實現n^k,使用遞迴實現

double mypow(int n, int k)

else

}

3. 寫乙個遞迴函式digitsum(n),輸入乙個非負整數,返回組成它的數字之和,

例如,呼叫digitsum(1729),則應該返回1+7+2+9,它的和是19

int  digitsum(int n)

if (n > 9)

return n % 10;

}

4. 編寫乙個函式 reverse_string(char * string)(遞迴實現)

實現:將引數字串中的字元反向排列。

要求:不能使用c函式庫中的字串操作函式。

extern int mystrlenrecursion(char* str);

void reverse_string(char * string)

}

這裡用到了乙個求字串長度的函式,寫在下面。

5.遞迴和非遞迴分別實現strlen

//遞迴

int mystrlenrecursion(char* str)

return mystrlenrecursion(str + 1) + 1;

}//非遞迴

int mystrlennotrecursion(char* str)

return len;

}

6.遞迴和非遞迴分別實現求n的階乘

//非遞迴

int factorial(int n)

if (n == 0) return result;

for (int i = 1; i <= n; i++)

return result;

}//遞迴

int factorialrecursion(int n)

if (n == 1 || n == 0)

return factorialrecursion(n - 1) * n;

}

7.遞迴方式實現列印乙個整數的每一位

void printnumber(int n)

printf("%d\n", n % 10);

}

C語言練習7

1.遞迴和非遞迴分別實現求第n個斐波那契數。define crt secure no warnings include include intfibonacci int n return fibonacci n 1 fibonacci n 2 intfibonacci int n return f3...

C語言模擬練習(7)

1.乙個陣列中只有兩個數字是出現一次,其他所有數字都出現了兩次。找出這兩個數字,程式設計實現。include void find int arr,int sz 查詢只出現一次的數字 if 1 k 出現1次為1 出現2次為2 int main int sz sizeof arr sizeof arr ...

C語言練習

練習1 include stdlib.h include iostream.h include stdio.h void main cout 輸入檔案1的資料內容 以 結束 while ch stu n void input char a a用於接收要寫入資料的檔名 inti file fp if ...