-
遞歸的要點!!
查看全部 -
函數的遞歸調用:
1、要知道遞歸的終止條件是什么,比如本題的是當n = 1時;
查看全部 -
參數列表 的寫法是? 類型+參數名稱,每個參數之間用逗號隔開;
參數可以是任意類型,可以是基礎數據類型,指針,也可以是結構體類型。
查看全部 -
//定義函數,然后再調用函數
int avg( int a, int b)
{
? ? ? return ( a + b )/2;
}
//我們在實現函數體的調用,必須在調用之前進行聲明。
查看全部 -
#include <stdio.h>
int main(int argc,char **argv)
{
? ?printf("Hello World!\n");
? ?return 0;
}查看全部 -
定義結構體
struct student
student可改
查看全部 -
整數
char,short,int,long,long long
無符號unsigned
浮點float double
查看全部 -
把一個函數變成內聯函數呢?只需要在函數前面加 inline 關鍵字就可以了。
int add(int a, int b);
inline int add(int a, int b)
{
? ?return a + b;
}
內聯函數有好處,就是可以節省調用時候的額外開銷。但是同時也會造成另外的問題,內聯是以代碼膨脹為代價而進行的優化,而如果一個函數過長,或者一個函數被調用了好多次,那么顯然就不是適合使用內聯函數優化。查看全部 -
以,如果要使用這種自己調用自己的方式,就需要滿足一定的條件。已經有前人為我們總結出了遞歸調用的三要素,如下:
?
1. 遞歸的終止條件是什么?
這是非常重要的,在遞歸中,我們必須要設計好這一點,那就是遞歸什么時候停止。否則就會像前面的例子一樣,直接爆棧。
?
2. 遞歸被分解后最基本操作是什么?
遞歸非常適合層級調用關系,每一層都執行相同的操作,這個要素,就是要提取出遞歸最核心的要素。
?
3. 遞歸調用傳遞的參數
#include<stdio.h>
int fact(int n)
{
??? if(n==1) {
??????? return 1;
??? }
??? else {
??????? return n * fact(n-1);
??? }
}
int main(int argc,char **argv)
{
??? int x = 5;
??? int res = fact(x);
??? printf("%d\n",res);
??? return 0;
}這里傳遞的參數其實除了參數列表,還包括返回值。參數列表表示給下一層調用需要傳遞什么,返回值表示上一層調用需要返回什么
查看全部 -
#include <stdio.h>
//定義函數
int avg(int a, int b)
{
? ?return a + b / 2;
}
int main(int argc,char **argv)
{
? ?int a = 10;
? ?int b = 20;
? ?int c = avg(a, b); //函數調用
? ?return 0;
}查看全部 -
int length = 100;
int array[length];
int target = 10;
for(int i=0;i<length;i++) {
? ?if(array[i] == target) {
? ? ? ?// 找到了
? ?}
}continue
int length = 100;
int array[length];
int target = 10;
for(int i=0;i<length;i++) {
? ?if(array[i] == target) {
? ? ? ?continue;
? ?}
? ?printf("array[%d]: %d\n", i, array[i]);
}在這段程序中,當 array[i] == target 的時候,會執行 continue 語句,跳出本次循環,而進入下一次循環,所以本次的 printf 不會被打印,而下一次會繼續打印。
查看全部 -
#include<stdio.h>
int main(int argc,char**argv)
{
?? int array[100];
for(int i=0;i<100;i++){
??? printf("array[%d]: %d\n", i, array[i]);
}
}查看全部 -
#include <stdio.h>
int main(int argc,char **argv)
{
? ?int * p = (int *)malloc(5 * sizeof(int));
? ?free(p);
? ?return 0;
}
查看全部 -
#include <stdio.h>
int main(int argc,char **argv)
{
??? int array[5];
??? *(array + 2) = 1;//等價于array【2】=1
??? return 0;
}查看全部 -
#include<stdlib.h>
p=(int*)malloc(4)//堆內存首地址在棧內存上
查看全部 -
enum枚舉
enum Week
{
? ?Mon, // 星期一
? ?Tue, // 星期二
? ?Wed, // 星期三
? ?Thu, // 星期四
? ?Fri, // 星期五
? ?Sat, // 星期六
? ?Sun, // 星期日
};
int main(int argc,char **argv)
{
? ?Week week = Week::Fri;
? ?return 0;
}查看全部
舉報