C語言:遞迴小例子幾則

來源:互聯網
上載者:User

標籤:c語言   指標   遞迴   

遞迴定義:

一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法。

遞迴條件:

(1) 遞迴就是在過程或函數裡調用自身;  

(2) 在使用遞迴策略時,必須有一個明確的遞迴結束條件,稱為遞迴出口。

利用遞迴可以使程式簡化,減少代碼的編寫,下面請看例子。

1.取得十進位數的每一位並以字元的形式輸出。

#include<stdio.h>

#include<stdlib.h>

void binary_to_ascii(unsigned int value)

{

int num = value % 10;           //模10可得到十進位數的每一位

if (value> 9)                   //遞迴結束條件

binary_to_ascii(value / 10);            //去掉最後一位,遞迴調用自身

printf("%c", num + ‘0‘);                        //加字元0的ascii碼值後得到對應字元

}

int main()

{

binary_to_ascii(1234);

system("pause");

return 0;

}

2.不使用臨時變數得到字串長度,利用遞迴函式

#include<stdio.h>

int my_strlen1(const char *str)         //使用臨時變數的方式

{

int count = 0;

while (*str)

{

count++;

str++;

}

}

int my_strlen(char *str)                      //利用遞迴函式的方式

{

if (*str == ‘\0‘)                     //判斷字串是否為空白

return 0;

else

return 1 + my_strlen(str+1);   //指向字串的指標加1傳回值就加1

}                                              //注意:此處的str+1不可以用str++或++str替代

int main()                                     //前者指標將會在自加之前一直指向同一個字元

{                                              //後者儘管可以實現指標向後 加1的目的,但是

char *p = "bit-tech";                  //具有副作用,它會改變指標的內容

printf("%d\n", my_strlen(p));

system("pause");

return 0;

}

3.寫一個遞迴函式DigitSum(n),輸入一個非負整數,返回組成它的數字之和,例如,調用DigitSum(1729),則應該返回1+7+2+9,它的和是19

#include<stdio.h>


int DigitSum(int num){

int sum = 0;

int tmp = num % 10;

if (num > 0)

sum = tmp+DigitSum(num / 10);

return sum;

}

int main(){

int num = 0;

printf("請輸入一個非負整數\n");

scanf_s("%d", &num);

int ret = DigitSum(num);

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

return 0;

}

4.編寫一個函數實現n^k,使用遞迴實現

#include<stdio.h>


int calculate(int num, int k){

if (k == 0)                       //指數為0

return 1;

else                              //指數不為0

return num * calculate(num, k - 1);//計算k次冪,遞迴調用k-1次

}

int main(){

int num = 0;

int k = 0;

printf("請輸入想要計算的數和冪\n");

scanf_s("%d %d", &num, &k);

printf("%d\n", calculate(num, k));

return 0;

}

本文出自 “moLova” 部落格,請務必保留此出處http://molova.blog.51cto.com/10594266/1688240

C語言:遞迴小例子幾則

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.