機能は何ですか?
まず、関数は、特定のタスクを達成するためのプログラムコードであり、自分自身の独立したユニットを持っています。
例えば
「あなたは本を得ることができますか?」
「あなたは、この言語の本を取ることができますか?」
「あなたはリンゴを得ることができます?。」。。。。
私たちは同じアクションの多くを繰り返すことが推定されているプログラムを入れた場合は、第1の利点は、その関数である:ライト・コードの重複する必要がなくなり、
書籍、言語の書籍、リンゴ:その機能として、その後のようなものを取る「あなたが得ることができます」。。。これらは、完璧を改正することができ、
代わりに間違いが非常に面倒で偶然、主な機能には、前後方向転換する必要はありません。そこで、第二の利点機能は:のみ、細胞内の特定の機能にプログラムを修正し、改善します
次に、コードを見ます
#define NAME「GIATHINK」 の#define教室「101」 の#define 年齢14 #derine NUM 40 空 DARS(無効)。 int型 空隙{メイン()を (レッスン); pirntf(" %sの\ n " 、NAME)。 printf(" %sの\ nは" 、教室)。 printf(" %d個\ N " 、年齢);
DARS(); } 空隙 DARS(ボイド){ int型I。 以下のための式(I = 0、I <numは、I ++ ) putchar(' * ' ); putchar(' \ N ' ); }
結果:
ここで合計3回に機能メインDARSに表示される機能DARS、によって、機能DARSを指し、まず、それぞれ、第二及び第三の機能を機能DARSを宣言することであるコールのputchar( '*「) 。
カスタム関数では、パラメータなしの場合のボイドDARS()は、その後、C99標準は、デフォルト設定の機能興味深い種類をサポートしていない、ほとんどの関数は、C言語のInt型で、長い前に、デフォルトのvoid型に配置することができます
まあ、我々は栗を終了します
そして、その中に古い学生の再帰関数のためのトピックを見て
書式#include <stdio.hに> 無効 UP_DOWN(int型); int型(主ボイド){ } ボイド UP_DOWN(INT A){ printf("Level %d: location %p \n",n,&n); if(n<5) up_down(n+1); printf("LEVEL %d: location %p\n",n,&n); }
首先mian() 使用了参数调用函数up_down()于是up_down 中形式参数n为1,所以打印出来Leve1 ,接着由于n<5,所以 up_dwon()的参数+1 ,数值2条用了up_down 使得第二级被赋值2输出Leve2 接着依次调用3,4,5。
当n=5,n+1<5为假时,不满足If语句的条件,所以不在继续调用up_down ,接着输出LEVEL5,当5调用结束时,控制返回给该调用函数,也就是4,3,2,1就会有接下来的这些一直到返回到1并执行后续代码。
总的来说递归条用非常类似一个循环语句,是实际上,递归有时候可以被用来代替循环,反之也是可以!