[英]c passing pointer to recursive function
所以在這里我正在努力學習這個程序,我試圖找出如何使用一個聲明為main的指針數組,在一個遞歸函數中記憶數據,這里出現的問題是,如果它與單個方法相同指針,結構類型怎么樣? 通過引用變量/數組傳遞給遞歸函數的最佳方法是什么?
#include <stdio.h>
#include <stdlib.h>
#define N 1
void f(int i,int j,int *cnt);
int j=0;
int main(int argc, char *argv[])
{
int *cnt=0;
f(0,++j,&cnt);
printf("------ %d ---- \n",cnt);
system("PAUSE");
return 0;
}
void f(int i,int j,int *cnt){
if(i>N){
printf("---if --- %d ---- %d \n",i,j);
(*cnt)++;
return;
}
(*cnt)++;
printf("---bg --- %d ---- %d \n",i,j);
f(i+1,++j,cnt);
f(i+1,++j,cnt);
}
另一件我想知道的是遞歸函數如何處理++ i和i ++以及i + 1增量(當作為參數傳遞時),
int main(int argc, char *argv[])
{
int *cnt=0;
f(0,++j,&cnt);
printf("------ %d ---- \n",(*cnt));
system("PAUSE");
return 0;
}
需要是
int main(int argc, char *argv[])
{
int intStorage = 0;//<---- As Oli said.
int *cnt= &intStorage;
f(0,++j,cnt);//<-------AMPERSAND removed, overly dereferenced.
printf("------ %d ---- \n",(*cnt));
system("PAUSE");
return 0;
}
++ i和i ++和i + 1(當作為參數傳遞時):
我會嘗試修復你的功能:
void f(int i,int j,int *cnt){
if(i>N){
printf("---if --- %d ---- %d \n",i,j);
return;
}
(*cnt)++;
printf("---bg --- %d ---- %d \n",i,j);
if ( i < 50 && j < 50 ) {
f(i+1,++j,cnt);
f(i+1,++j,cnt);
}
}
仍然有很多遞歸,但沒有不停止的危險。
處理指向函數的指針的簡單方法是:
#include <stdio.h>
#include <stdlib.h>
#define N 1
void f(int i, int j, int *cnt);
int j = 0;
int main(void)
{
int cnt = 0;
f(0, ++j, &cnt);
printf("------ %d ----\n", cnt);
return 0;
}
void f(int i, int j, int *cnt)
{
// Having a local variable j and a global j is likely to confuse someone!
if (i > N)
{
printf("---if --- %d ---- %d\n", i, j);
return;
}
(*cnt)++;
printf("---bg --- %d ---- %d\n", i, j);
f(i+1, ++j, cnt);
f(i+1, ++j, cnt);
}
此代碼生成以下輸出而不會崩潰:
---bg --- 0 ---- 1
---bg --- 1 ---- 2
---if --- 2 ---- 3
---if --- 2 ---- 4
---bg --- 1 ---- 3
---if --- 2 ---- 4
---if --- 2 ---- 5
------ 3 ----
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.