की गणना करना मुझे पेड़ में संग्रहीत प्रकाशनों की सूची से h-index की गणना करने की आवश्यकता है।एच-इंडेक्स
क्या मैं था प्रशंसा पत्र
यह की तरह लग रहा की स्थिति-संख्या की एक सूची प्राप्त करने के क्रम में कम हो जानेवाला पेड़ traversing है:
line 1 10
line 2 5
line 3 4
line 4 0
मैं लाइन 3 पर रोकने के लिए और 3. वापसी समस्या चाहिए दिए गए उदाहरणों के साथ है और इस मामले में
line 1 4
line 2 0
line 3 0
यह 2 पर बंद हो जाता है क्योंकि 4> 1 लेकिन 0> 3 गलत है। इसे बदले में 1 वापस करना चाहिए। क्या आप मुझे समझा सकते हैं क्यों? मुझे पता है कि यह एक गणितज्ञ प्रश्न की तरह है, लेकिन इसके बाद मुझे कुछ गहराई से गलत होने पर इसे फिर से लागू करने की आवश्यकता हो सकती है।
यहाँ कोड
int index_h_calc(rbtree_node n, int *i){
if (n == NULL) {
fputs("<empty tree>\n", stdout);
return 0;
}
if (n->right != NULL)
index_h_calc(n->right,i);
graduat *grad;
grad=n->value;
if(DEBUG)
printf("linea %d %d %s\n ",*i,(int)grad->tot,grad->name);
if(*i+1>=(int)grad->tot) {
return *i;
} else
*i+=1;
if (n->left != NULL)
index_h_calc(n->left,i);
return *i;
}
... ऐसा नहीं होना चाहिए, "फिर एच-इंडेक्स * * * * 1 के रूप में वापस करें"? अन्यथा यह मेरे लिए सही लगता है ... – Dmitri
@Dmitri: नहीं, यह 'i - 1' होना चाहिए। ओटी के पहले उदाहरण पर विचार करें: हम लाइन 4 (क्योंकि '0 <4') पर रुकते हैं और' 4 - 1 = 3' का एच-इंडेक्स लौटाते हैं। दूसरे उदाहरण में, हम लाइन 2 पर रुकते हैं और '1' वापस करते हैं। – deprecated
ओह .. जब मैंने लिखा कि मेरे पास कुछ कारणों से मेरे दिमाग में 'n' और' i' पिछड़ा था। – Dmitri